关于python:django – 带有多个ForeignKey的inlineformset_factory

django - inlineformset_factory with more than one ForeignKey

我正在尝试使用以下模型创建一个表单集(主要是Boost):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)

我想显示一个表单来添加一个增强项,尝试这样做:

1
2
   TrophyFormSet = inlineformset_factory(db.gameInfo, db.boost, extra=1)
   formset = TrophyFormSet()

以下是我的问题:

1-渲染时,"creator"的组合框显示"db.userinfo"的列表(字面意思)!我希望显示数据库中已有的db.userinfo.auth.username…怎么做?

2-这样,我的"db.gameinfo"在哪里选择?

谢谢您!= D

不等于

捷克人很好地回答了我的问题!但现在我只需要问一个问题:

当我使用ModelForm为Boost_奖杯模型创建表单时:

1
2
3
4
5
6
7
8
9
10
11
12
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)

它的工作很好,但我想在"游戏"框中只显示一组非常小的ITEN,只显示:gametrophyinfo(game_uu name="game_u a")结果。我该怎么做?


如果我理解正确:

要更改显示的内容,请设置模型的__unicode__功能

1
2
3
4
5
class userInfo(models.Model):
  #model fields

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