我試着做以下車型一個formset(升壓是主):Django的 - inlineformset_factory超過一個ForeignKey的
class boost(models.Model): creator = models.ForeignKey(userInfo) game = models.ForeignKey(gameInfo) name = models.CharField(max_length=200) desc = models.CharField(max_length=500) rules = models.CharField(max_length=500) subscribe = models.IntegerField(default=0) class userInfo(models.Model): pic_url= models.URLField(default=0, blank=True) auth = models.ForeignKey(User, unique=True) birth = models.DateTimeField(default=0, blank=True) country= models.IntegerField(default=0, blank=True) class gameInfo(models.Model): psn_id = models.CharField(max_length=100) name = models.CharField(max_length=200) publisher = models.CharField(max_length=200, default=0) developer = models.CharField(max_length=200, default=0) release_date = models.DateTimeField(blank=True, null=True)
我想顯示出表格添加一個升壓項目,努力做以這樣的方式
TrophyFormSet = inlineformset_factory(db.gameInfo, db.boost, extra=1) formset = TrophyFormSet()
這裏是我的問題:
1 - 當renderized,爲 「創造者」 組合框顯示 「db.userInfo」(直譯)的列表!我想這顯示已經在數據庫中的db.userInfo.auth.username ...如何做到這一點?
2 - 這樣一來,哪裏是我的 「db.gameInfo」 選擇?
謝謝! = d
======
czarchaic回答我的問題非常好! 卜現在我只需要一個小問題:
當我使用的ModelForm創建的boost_trophy模型形式:
class boost_trophy(models.Model): boost = models.ForeignKey(boost) trophy = models.ForeignKey(gameTrophyInfo) # 0 - Obtiveis # 1 - Requisitos minimos type = models.IntegerField(default=0) class gameTrophyInfo(models.Model): game = models.ForeignKey(gameInfo) name = models.CharField(max_length=500) desc = models.CharField(max_length=500) type = models.CharField(max_length=20)
的工作不錯,但我想形式在顯示「遊戲「框只是一個真正的小集itet,只有:gameTrophyInfo(game__name =」Game_A「)的結果。我怎樣才能做到這一點 ?
這應該是效果。每個gameTrophyInfo可以屬於一個gameInfo,但每個gameInfo可以有多個gameTrophyInfos – shenk 2016-05-28 18:21:36