django モデル システムとそのデフォルトの管理者で厄介な問題が発生しています。
次のような非常に単純なモデルがあるとします。
class Note(models.Model):
text = models.CharField(max_length=200)
def __unicode__(self):
return self.text
そして次のようなコンテナ:
class NoteCollection(models.Model):
notelist = models.ManyToManyField(Note)
title = models.CharField(max_length=20)
def __unicode__(self):
return self.title
NoteCollectionが追加されたときに、すべての「メモ」要素を更新したいのです。m2mモデルには複雑な保存メカニズムがあると読んだので、考えていたのは、フォームオブジェクトを読み込んで、自分でNote要素を保存するだけです!!
しかし、APPNAME/admin.py で次のようなものを作成すると:
from models import Note,NoteCollection
from django.contrib import admin
class NoteCollectionAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
# Something USEFUL HERE
pass
admin.site.register(Note)
admin.site.register(NoteCollection, NoteCollectionAdmin)
Django からエラーが表示されます: (「NoteCollection」インスタンスは、多対多の関係を使用する前に主キーの値を持つ必要があります。)
私はNoteCollectionオブジェクトをまったく使用したくありません.フォームオブジェクトに興味があります..
M2M フィールドで save_model を使用するいくつかの例をインターネットで見つけたので、なぜこのエラーが発生し続けるのか理解できません。参考までに、スクラッププロジェクトを新しく作成したばかりで、テストにsqlite dbを使用しています