Один из способов определения отношений между одним объектом и многими другими типами объектов - это использование GenericForeignKey
и ContentType
framework . Я предполагаю, что вы будете искать Product
с более конкретным связанным объектом, таким как Jacket
. Это может выглядеть примерно так:
class Product(models.Model):
price = models.FloatField()
description = models.TextField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
details = generic.GenericForeignKey('content_type', 'object_id')
class Jacket(models.Model):
size = models.PositiveIntegerField()
color = models.CharField(max_length=25)
Это позволяет вам определить любое количество моделей, подобных Jacket
, которое может быть связано с вашим продуктом.
jacket = Jacket(size=69, color="pink")
jacket.save()
prod = Product(price=0.99)
prod.details = jacket # It's like magic!
prod.save()
Это создает дополнительную работу по созданию тонны моделей, но также позволяет вам быть очень креативным с тем, какие данные вы храните и как вы их храните.