【问题标题】:Using Foreign Key on Django model to populate select input在 Django 模型上使用外键填充选择输入
【发布时间】:2018-06-26 21:54:19
【问题描述】:

我在文档中查找如何解决我的问题时遇到问题,所以我在这里发布: 我有 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 还很陌生

【问题讨论】:

标签: python django forms foreign-keys models


【解决方案1】:

原来我所要做的就是通过向每个模型添加一个 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

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多