在 Django 模型上使用外键填充 select 输入
Using Foreign Key on Django model to populate select input
我在文档中找不到如何解决我的问题,所以我在这里发帖:
我有 3 个模型,一个用于 class 房间及其属性,一个用于学生,最后一个是房间与学生的关系。
所以在模板上,我希望它显示一个 select 按钮,选项值为学生 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
还很陌生
原来我所要做的就是通过向每个模型添加一个 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
我在文档中找不到如何解决我的问题,所以我在这里发帖: 我有 3 个模型,一个用于 class 房间及其属性,一个用于学生,最后一个是房间与学生的关系。 所以在模板上,我希望它显示一个 select 按钮,选项值为学生 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
还很陌生原来我所要做的就是通过向每个模型添加一个 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