django - inlineformset_factory с более чем одним ключом ForeignKey - PullRequest
8 голосов
/ 27 января 2010

Я пытаюсь сделать formset со следующими моделями (повышение является основным):

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

======

Чархаич очень хорошо ответил на мой вопрос! Но сейчас мне нужен небольшой вопрос:

Когда я использую модель для создания формы для модели 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)

его работа хороша, но я хочу, чтобы форма отображала в поле "игра" только очень маленький набор итэнов, только результаты: gameTrophyInfo (game__name = "Game_A") Как я могу это сделать?

1 Ответ

4 голосов
/ 28 января 2010

Если я вас правильно понимаю:

Чтобы изменить отображаемое значение, установите функцию __unicode__ модели

.
class userInfo(models.Model):
  #model fields

  def __unicode__(self):
    return self.auth.username
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...