0

我有以下(簡體版)中的問題機型:如何在特定模型綁行到現場的另一個在Django

Sponsor(models.Model): 
    sponsor_name = models.CharField() 

Concerts(models.Model): 
    artist_name = models.CharField() 
    sponsor = models.ManyToMany(Sponsor) 

我進入管理界面,並添加了新的贊助商,它會自動顯示在任何音樂會上,所有贊助商都會在所有音樂會上演出。這不是我想要的,我希望一些贊助商參加一些音樂會。

我意識到這是一個關係問題。 我曾嘗試:

Sponsor(models.Model): 
    belongs_to = models.ForeignKey(Concerts) 
    sponsor_name = models.CharField() 

Concerts(models.Model): 
    artist_name = models.CharField() 

但現在我不能重用的贊助商,我要補充的每場演唱會一個新的。

回答

2

我想你錯誤可能的價值與實際選擇SponsorConcert模型在Django的管理界面。

試試這個python manage.py shell然後from yourapp.yourmodel import Concerts; Concerts.objects.sponsor_set.all()。 結果應該只包含該模型的選定Sponsors(我打賭你會看到空的列表)。

+0

哦,是的,我看到所有的價值觀,我必須突出我想要的,然後保存,傻了我。謝謝 –

1

如果你想每場演唱會擁有多個Sponsor s,而每個Sponsor能夠與多個Concert s之關聯,那麼你將要使用ManyToManyField而不是ForeignKey

看看它的文檔在https://docs.djangoproject.com/en/dev/ref/models/fields/#manytomanyfield

的問題可能是你如何顯示您的贊助商 - 請確保當你打印出來的演唱會在你的模板,你不選擇所有贊助商,但是迭代了concert_instance.sponsor.all()查詢集。

相關問題