Django的

我试图用下列模型做一个formset(boost是主要的):

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)

我想显示一个表单来添加一个Boost项目,试图这样做:

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

这是我的问题:

1 - 进行渲染时,“创建者”组合框显示“db.userInfo”(字面上)的列表! 我想这显示已经在数据库中的db.userInfo.auth.username ...如何做到这一点?

2 - 以这种方式,我的“db.gameInfo”选择在哪里?

谢谢 ! = d

======

沙皇回答我的问题非常好! 现在我需要一个小问题:

当我使用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)

它的工作很好,但我想要的形式只显示在“游戏”框中的一小部分itens,只有:gameTrophyInfo(game__name =“Game_A”)的结果。 我怎样才能做到这一点 ?


如果我正确理解你的话:

要更改显示内容,请设置模型的__unicode__函数

class userInfo(models.Model):
  #model fields

  def __unicode__(self):
    return self.auth.username
链接地址: http://www.djcxy.com/p/38671.html

上一篇: django

下一篇: django queryset filter datetimefield