我有以下型号:
Class A(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
thumbnail = models.ImageField(...)
class B(models.Model)
title = models.CharField()
def save(*args, **kwargs):
# Based on the title field I want to fetch some picture and then save the thumbnail in A
我有更多像B这样的类应该从A引用(这就是我使用GenericForeignKey的原因)。我想弄清楚的问题是如何在B中的save()
方法中保存缩略图字段(在A上)。在A中插入多个if语句以检查引用类的类型并保存相应的缩略图非常麻烦。
答案 0 :(得分:0)
从B
查看at the docs, you can add a reverse generic relation到A
:
如果您知道最常使用的型号,您还可以添加“反向”通用关系以启用其他API
class A_Model(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
thumbnail = models.ImageField(...)
class B_Models(models.Model)
title = models.CharField()
a_models = generic.GenericRelation(A_Model)
现在你可以这样做:
b = B_Model()
a = A_Model(content_object=b, thumbnail=...)
a.save()
b.a_models.all()