Django中的下拉列表显示外键字段的对象

2024-10-01 02:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用模型在Django中自动生成表单。这是我的密码

class Dependent(models.Model):
    primarystudentid = models.ForeignKey('Students', models.DO_NOTHING, db_column='PrimaryStudentID')  # Field name made lowercase.
    dependentname = models.CharField(db_column='DependentName', max_length=100)  # Field name made lowercase.
    relation = models.CharField(db_column='Relation', max_length=50)  # Field name made lowercase.
    def __str__(self):
        return "{0}".format(self.primarystudentid)

primarystudentid是学生表中自动生成的字段。我已经尝试过unicode和str,但是我仍然在dropdown中得到primarystudentid作为Students对象的值。我从堆栈溢出和其他站点尝试了很多方法,但似乎不起作用。 Python版本Python 2.7.13 Django版本1.9.13 感谢任何帮助!在


Tags: djangonameselffielddbmodelscolumnlength
2条回答

您需要更新Student表(而不是依赖表)的strunicode方法,并返回name或您希望在下拉列表中显示的任何字段。在

示例:

class Student(models.Model):
    name = models.CharField(max_length=50)

def __str__(self):
    return u'{0}'.format(self.name)

注:请将字段的名称dependentname更新为仅name,因为很明显,如果这是在依赖模型中,那么它就是Dependent的名称。在

您需要引用另一个表中的字段。在

dep = Dependent.objects.first()
dep.primarystudentid.name # This would be the name

在你的str例子中

^{pr2}$

值得注意的是,这很容易导致生成大量额外的查询。在

相关问题 更多 >