我试着用以下模型做一个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 - 重新定义时,"Creator"的组合框显示"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)
它的工作很好,但我想在"游戏"框中显示的形式只有一小部分的itens,只有:gameTrophyInfo(game__name ="Game_A")结果.我怎样才能做到这一点 ?
如果我理解正确:
要更改显示的内容,请设置模型的 __unicode__功能
class userInfo(models.Model):
#model fields
def __unicode__(self):
return self.auth.username
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |