我有的:
a) 一个简单的类来存储标签:
class Tag(models.Model):
"""
Defines a tag for any model object.
"""
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
type = models.ForeignKey(TagType, related_name='+', verbose_name="Typ", db_column='Typ')
value = models.CharField("Wert", max_length=80, db_column='Wert')
b) 将反向添加到任何类的 mixin:
class TaggedMixin(models.Model):
""" Mixed into a model class, provides it with the ability to receive tags
(i.e. Tag objects).
"""
_tags = GenericRelation(Tag)
c) 还有一些类,称为 Data,它继承自 Mixin。在管理中,此类使用 GenericTabularInline for Tag 来显示数据的标签。它还将“save_as”设置为 True,以便在其管理页面上获得“另存为”按钮。
会发生什么:当我为具有至少一个标签的数据对象单击“另存为”时,我得到:完整性错误(1048,“列'content_type_id'不能为空”)
在我看来,Django Admin 在执行“另存为”时似乎没有正确处理 GenericForeignKeys。有没有办法让它运行?解决问题的方法?还是我在这里做错了什么?
也许我应该补充一下,我在这里使用的是 Django 1.7.7。
编辑:我们已经升级到 1.8.2 并且问题仍然存在。有任何想法吗?