Django - 独特的模型数据
Django - Unique model data
例如:
class CarImage(models.Model):
image = models.ForeignKey(Image)
car = models.ForeignKey(Car)
message = models.TextField()
message = 'awesome car'
for image in Image.objects.all():
for car in Car.objects.all():
if not CarImage.objects.filter(
Q(image=image),
Q(car=car),
Q(message=message),
):
carimage = CarImage()
carimage.image = image
carimage.car = car
carimage.message = message
carimage.save()
有没有更有效的方法来创建基于多个字段的独特模型?签名字段会让这更好吗?或者 Django Signals 会解决这个问题 - 每当创建 Car,Image,消息时发送信号来创建 CarImage?
您可以在 CarImage
模型 Meta
中添加 unique_together
约束。
Sets of field names that, taken together, must be unique.
Django 将确保无论何时您创建一个 CarImage
对象,image
、car
和 message
字段集都是唯一的。
class CarImage(models.Model):
image = models.ForeignKey(Image)
car = models.ForeignKey(Car)
message = models.TextField()
class Meta:
unique_together = (('image', 'car', 'message'),) # define unique_together constraint
例如:
class CarImage(models.Model):
image = models.ForeignKey(Image)
car = models.ForeignKey(Car)
message = models.TextField()
message = 'awesome car'
for image in Image.objects.all():
for car in Car.objects.all():
if not CarImage.objects.filter(
Q(image=image),
Q(car=car),
Q(message=message),
):
carimage = CarImage()
carimage.image = image
carimage.car = car
carimage.message = message
carimage.save()
有没有更有效的方法来创建基于多个字段的独特模型?签名字段会让这更好吗?或者 Django Signals 会解决这个问题 - 每当创建 Car,Image,消息时发送信号来创建 CarImage?
您可以在 CarImage
模型 Meta
中添加 unique_together
约束。
Sets of field names that, taken together, must be unique.
Django 将确保无论何时您创建一个 CarImage
对象,image
、car
和 message
字段集都是唯一的。
class CarImage(models.Model):
image = models.ForeignKey(Image)
car = models.ForeignKey(Car)
message = models.TextField()
class Meta:
unique_together = (('image', 'car', 'message'),) # define unique_together constraint