djangoに問題があり、頭を動かすことができません。2日間それを続けて、ソースを調べていましたが、説明が見つかりません。誰かが私よりもこれをよく知っていることを願っています!
私は2つのモデルを持っています、Publication
そしてArticle
このように
class Publication(models.Model):
title = models.CharField(max_length=30)
articles = models.ManyToManyField('Article',blank=True)
class Meta:
db_table = 'publications'
class Article(models.Model):
headline = models.CharField(max_length=100)
class Meta:
db_table = 'articles'
新しいものを保存するときにPublication
、デフォルトの記事を自動的に保存したいと思います。これをテストするためのスクリプトを実行しましたが、正常に動作します。両方のオブジェクトがそれぞれのテーブルに作成され、1つのエントリがpublications_articles
テーブルに書き込まれます。予想通り。
publication = Publication(title='The new exciting publication')
publication.save()
publication.articles.create(headline='The article that makes the pub so exciting')
ただし、ここで注意が必要な部分があります。管理者に保存するときに同じ機能を持つためにPublication
、私はこのような機能をオーバーライドしましたsave_model()
。
class PublicationAdmin(admin.ModelAdmin):
list_display = ['title']
def save_model(self, request, obj, form, change):
if not change:
obj.save()
obj.articles.create(headline='The article that makes this pub so exciting')
else:
obj.save()
管理者にaを保存すると、とのPublication
両方が作成されますが、それらを結び付けるエントリはテーブルにありません。Publication
Article
publications_articles
誰かお願いします、この振る舞いを説明してください。私はそれをやり遂げるために生のsql-insertを実行しようとしていますが、エンティティ間の接続が確立されない理由を理解したいと思います。