我正在尝试验证从 GenericInlineModelAdmin 表单保存的通用关系对象。
当对象被创建object_id
并content_type
设置为None
时,我无法访问它的相关对象,但是当对象被更新时,它们被正确设置。
这是示例代码:
在models.py
:
class Article(models.Model):
title = models.CharField(max_length=32)
body = models.TextField()
class TaggedItem(models.Model):
tag = models.SlugField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def clean(self, exclude=None):
pass
在admin.py
:
class InlineTags(generic.GenericTabularInline):
model = TaggedItem
class ArticleAdmin(admin.ModelAdmin):
inlines = [InlineTags]
admin.site.register(Article, ArticleAdmin)
如果添加标签,则在TaggedItem.clean()
方法self.object_id
中self.content_type
设置为None
. 如果正在编辑标签,则它们已正确设置。
我在 django 1.4.x 和 1.5.x 上都试过这个。