我正在使用模型在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 任何帮助表示赞赏!
答案 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:请将字段依赖名称的名称更新为名称,因为很明显,如果这是在依赖模型中那么它就是依赖的名称。