Уникальные значения поля для каждого пользователя, валидация пользовательских полей

У меня есть модель, в которой пользователи могут иметь дублирующиеся значения, но каждый пользователь может иметь только уникальные значения. например -

Пользователь 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()
Вернуться на верх