我有一个具有唯一通用外键关系的模型:
class Contact(models.Model):
...
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
class Meta:
unique_together = ('content_type', 'object_id',)
Run Code Online (Sandbox Code Playgroud)
意思是一个Contact
只能属于一个对象.通常,当我想扭转我能做的关系时
class Person(models.Model):
...
contacts = generic.GenericRelation(Contact)
Run Code Online (Sandbox Code Playgroud)
并且召唤person.contacts.all()
将给我所有的对象.因为Contact
在我的情况下只会有一个返回,有没有更好的方法来反向访问这个对象?
我可以写,person.contact.all()[0]
但必须有一个更清洁的方法
我有一个图像模型:
class Image(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
image = models.ImageField()
Run Code Online (Sandbox Code Playgroud)
我也有一个模型有领域
class MyModel(models.Model):
logo = models.ImageField()
icon = models.ImageField()
images = generic.GenericRelation(Image)
Run Code Online (Sandbox Code Playgroud)
我想要logo
并且icon
也要使用通用关系Image
。我怎样才能做到这一点?
我Image
在许多模型中都使用了通用模型,因此它必须是通用关系。我只想对所有图像使用相同的模型,即使它是图标,个人资料图片等。
最好的办法是,如果Django有一个字段generic.GenericOneToOneRelation(Image)
或其他东西:-)
我能想到的唯一解决方案是
class MyModel(models.Model):
logo = models.ForeignKey(Image)
icon = models.ForeignKey(Image)
images = generic.GenericRelation(Image)
Run Code Online (Sandbox Code Playgroud)
然后选择,然后在上载之后进行选择logo
,并在我打印与该模型相关的信息时从中排除。这将是一个好的解决方案吗?icon
images
logo
icon
images
images