在Django模型上使用Foreign Key来填充选择输入

时间:2018-01-17 22:16:35

标签: python django forms foreign-keys models

我在查找文档如何解决我的问题时遇到问题所以我发布在这里: 我有3个模型,一个用于具有其属性的教室,一个用于学生,最后一个用于房间和学生的关系。 因此,在模板上,我希望它显示一个选项按钮,其中选项值为学生ID,标签为学生名称

在我的models.py上我有这个:

student_id = models.ForeignKey('Student', verbose_name=u"Student")

在我的template.html上我只是打电话给:

  {{ field }}

我得到的结果是:

<select name='student_id'>
  <option value='1'>Student object</option>
</select>

有没有一种方法可以使用静态数据选项预设值和标签?这样的事情:

STUDENT_CHOICES =(
    (model.student.id , model.student.name),
)
student_id = models.ForeignKey('Student', verbose_name=u"Student",, choices=STUDENT_CHOICES)

如果我对这个问题不够清楚,请告诉我,因为我对python和django来说相当新鲜

1 个答案:

答案 0 :(得分:0)

原来我要做的就是通过为每个模型添加一个unicode函数来设置要返回的默认值:

def __unicode__(self):
    return self.student_name

以下完整的型号代码:

Class StudentRoom(models.Model):
    student_id  = models.ForeignKey('Student')
    room_id  = models.ForeignKey('Room')

Class Student(models.Model):
    student_name = models.CharField(max_length=100)
    student_email = models.CharField(max_length=100)

  def __unicode__(self):
    return self.student_name

Class Room(models.Model):
    room_name = models.CharField(max_length=100)
    room_faction = models.CharField(max_length=100)

  def __unicode__(self):
    return self.room_name