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 の両方でこれを試しました。