Django - UniqueConstraint не создан

Я пытаюсь применить ограничение для mysql, где пользователю запрещено вставлять дважды одни и те же name и model. Например, это не должно быть разрешено вставить дважды: name:Name1 model:Model1

#Model
class Car(models.Model):
    name = models.CharField(max_length=100)
    model = models.CharField(max_length=100)

#View
class CarListCreateAPIView(generics.ListCreateAPIView):

    serializer_class = CarSerializer
    def get_queryset(self):
        trip_code = self.kwargs.get("pk")
        return Car.objects.filter(trip = trip_code) #Return cars for given trip

#Seializer
class CarSerializer(serializers.ModelSerializer):
    class Meta:
        model = Car
        fields = ('__all__')
        constraints = [
            models.UniqueConstraint(fields=['name', 'model'], name='car_name_model_constraint')
        ]

Проблема в том, что ограничение никогда не создается и, следовательно, не выполняется. В чем может быть проблема с кодом?

Используйте unique_together в классе Meta в Model следующим образом:

class Car(models.Model):
    name = models.CharField(max_length=100)
    model = models.CharField(max_length=100)
   
    class Meta:
        unique_together = ['name','model']

Подробнее об этом здесь: https://docs.djangoproject.com/en/4.0/ref/models/options/#unique-together

Вернуться на верх