2010-01-27 78 views
4

我試着做以下車型一個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「)的結果。我怎樣才能做到這一點 ?

+0

這應該是效果。每個gameTrophyInfo可以屬於一個gameInfo,但每個gameInfo可以有多個gameTrophyInfos – shenk 2016-05-28 18:21:36

回答

2

如果我理解正確:

要更改顯示的內容設置模型的__unicode__功能

class userInfo(models.Model): 
    #model fields 

    def __unicode__(self): 
    return self.auth.username 
+0

把你所說的都放在gameInfo和userInfo中。與gameInfo 是好的,謝謝!但與userInfo,我得到一個錯誤: 用戶匹配查詢不存在。 這就是爲什麼self.auth.username在另一個模型中? – fabriciols 2010-01-28 01:46:34

+0

發現它,它是我自己的基礎問題:) – fabriciols 2010-01-28 01:54:56