For example:
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()
Is there a more efficient way to create unique models based on multiple fields? Would a signature field make this better? Or would Django Signals fix the problem - whenever Car, Image, message is created send signal to create CarImage?
You can add unique_together
constraint in CarImage
model Meta
.
Sets of field names that, taken together, must be unique.
Django will ensure that whenever you create a CarImage
object, set of image
, car
and message
fields taken together are unique.
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