Вы должны добавить ограничение как на уровне сериализатора, так и на уровне модели на тот случай, если запись будет создана вне сериализатора. Допустим, у записи есть поля id
и owner
, добавьте свойство unique_together
в класс Meta модели:
class Meta:
unique_together = (('id', 'owner'))
Затем в сериализаторе вы можете использовать CurrentUserDefault расширенное поле для захвата вошедшего в систему пользователя.
from rest_framework.validators import UniqueTogetherValidator
class RecordSerializer(serializer.ModelSerializer):
owner = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
class Meta:
validators = [
UniqueTogetherValidator(
queryset=Record.objects.all(),
fields=['id', 'owner']
)
]
Конечно, сериализатор должен использоваться в представлении, требующем аутентификации