私が持っているもの:
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) そして、Mixin から継承する Data と呼ばれるクラス。admin では、このクラスは Tag に GenericTabularInline を使用して Data のタグを表示します。また、管理ページに「名前を付けて保存」ボタンを表示するために、「save_as」を True に設定します。
何が起こるか: 少なくとも 1 つのタグを持つデータ オブジェクトの [名前を付けて保存] をクリックすると、次のメッセージが表示されます: Integrity Error (1048, "Column 'content_type_id' cannot be null")
私には、「名前を付けて保存」を行うときに、Django Admin が GenericForeignKeys を適切に処理していないようです。それを実行する方法はありますか?問題を回避する方法はありますか? それとも、ここで何か間違ったことをしている可能性がありますか?
おそらく追加する必要がありますが、ここでは Django 1.7.7 を使用しています。
編集: 1.8.2 にアップグレードしましたが、問題は解決しません。何か案は?