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

时间:2017-11-21 15:49:35

标签: python django

我正在使用模型在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是Students表中的自动生成字段。我试过unicode和str。但是,当学生反对时,我仍然可以在下拉列表中获得primarystudentid的价值。我从堆栈溢出和其他网站尝试了很多东西,但它似乎没有工作。 Python版本Python 2.7.13 Django版本1.9.13 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

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

dep = Dependent.objects.first()
dep.primarystudentid.name # This would be the name
你的str例子中的

def __str__(self):
    return "{0}".format(self.primarystudentid.name)

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

答案 1 :(得分:1)

您需要更新学生表(不是Dependent表)的 str unicode 方法,并返回名称或其他字段你想在下拉列表中显示。

示例:

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

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

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