Django - 未创建 UniqueConstraint
Django - UniqueConstraint not created
我正在尝试对 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')
]
问题是从未创建约束,因此不会强制执行。代码可能有什么问题?
在 class 元模型中使用 unique_together 像这样:
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
我正在尝试对 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')
]
问题是从未创建约束,因此不会强制执行。代码可能有什么问题?
在 class 元模型中使用 unique_together 像这样:
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