Уникальные значения поля для каждого пользователя, валидация пользовательских полей
У меня есть модель, в которой пользователи могут иметь дублирующиеся значения, но каждый пользователь может иметь только уникальные значения. например -
Пользователь A может иметь значение1, значение2, значение3, все уникальные значения. Пользователь B может иметь значение1, значение3, значение4, опять же все уникальные значения.
Итак, оба пользователя могут иметь значение1, но ни пользователь A, ни пользователь B не могут иметь несколько значений1 (дубликаты значений)
Значит, я не могу сделать что-то подобное в модели (установка unique = true)
class ABC(models.Model):
field1 = models.EmailField(unique=True)
Какой лучший способ проверки такого случая?
На данный момент я сверяю значения в базе данных со значением, которое я передаю в методе create моего views.py. И ищу какой-нибудь лучший подход для использования в сборке валидаторов из rest framework.
class abc_viewset(viewsets.ModelViewSet):
queryset = abc.objects.all()
serializer_class = abc_serializer
def create(self, request, format=None):
data = request.data
serializer = self.get_serializer(data=request.data)
self.field1=data['field1']
self.prevValues=abc.objects.filter(field1=self.field1,user=request.user)
.values_list('field1',flat=True)
if self.prevValues:
return Response({"Failure":"Dublicate value"})
if serializer.is_valid():
serializer.save()