Python django中的下拉列表显示外键字段的对象
我使用模型在Django中自动生成表单。这是我的密码Python django中的下拉列表显示外键字段的对象,python,django,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='DependentNam
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,但我仍然得到了作为学生对象的下拉列表中primarystudentid的值。我从stack overflow和其他站点尝试了很多方法,但似乎都不起作用。
Python版本Python 2.7.13
Django版本1.9.13
感谢您的帮助 您需要引用另一个表中的字段
dep = Dependent.objects.first()
dep.primarystudentid.name # This would be the name
在你的例子中
def __str__(self):
return "{0}".format(self.primarystudentid.name)
值得注意的是,这很容易导致生成大量额外的查询。您需要引用另一个表中的字段
dep = Dependent.objects.first()
dep.primarystudentid.name # This would be the name
在你的例子中
def __str__(self):
return "{0}".format(self.primarystudentid.name)
值得注意的是,这很容易导致生成大量额外的查询。您需要更新学生表(而非依赖表)的str或unicode方法,并返回名称或您希望在下拉列表中显示的任何字段 例如:
class Student(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return u'{0}'.format(self.name)
注意:请将字段dependentname的名称更新为name,因为很明显,如果这是在Dependent模型中,那么它就是Dependent的名称 您需要更新Student表(而不是依赖表)的str或unicode方法,并返回名称或您希望在下拉列表中显示的任何字段 例如:
class Student(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return u'{0}'.format(self.name)
注意:请将字段dependentname的名称更新为name,因为很明显,如果这是在Dependent模型中,那么它就是Dependent的名称 同时在学生表中定义str(self):方法,并在学生表中使用self.column\u name返回列值,然后在下拉列表中显示该值。同时在学生表中定义str(self):方法,并在学生表中使用self.column\u name返回列值,然后它将在下拉列表中显示该值