#django #django-rest-framework
Вопрос:
У меня есть модель, в которой пользователи могут иметь повторяющиеся значения, но у каждого пользователя могут быть только уникальные значения.
Например:
- Пользователь A может иметь значение 1, значение 2, значение 3, все уникальные значения.
- Пользователь B может иметь значение 1, значение 3, значение 4, опять же все уникальные значения.
Таким образом, оба пользователя могут иметь значение 1, но ни пользователь A, ни пользователь B не могут иметь несколько значений1 (повторяющиеся значения)
Поэтому я не могу сделать что-то подобное в модели (установка unique = true)
class ABC(models.Model):
field1 = models.EmailField(unique=True)
Каков наилучший способ проверки такого случая?
На данный момент я проверяю значения в базе данных на соответствие значению, которое я передаю во время метода создания моего views.py. И ищу любой лучший подход для использования в валидаторах сборки из фреймворка rest.
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":"Duplicate value"})
if serializer.is_valid():
serializer.save()
Комментарии:
1. вам нужно использовать unique_together для вашего пользователя и field.docs.djangoproject.com/en/3.2/ref/models/options /…