预填充表单字段,其中包含通过外键链接的表中的数据

时间:2016-02-13 19:23:34

标签: python django django-models django-forms

可能是一个非常新手Django的问题,但是这里有。在我的Django项目中,我在我的模型中有这个

#models.py
class Classes(models.Model):
        classcode = models.CharField(max_length=15)
        classname = models.TextField()
        students = models.ManyToManyField(User)

class Test(models.Model):
        classes = models.ForeignKey(Classes, on_delete=models.CASCADE)
        name = models.TextField(max_length=100)
        points = models.ManyToManyField(User, default=0)

我还有一个Test表单,它是:

#forms.py
class TestForm(forms.ModelForm):
    class Meta:
        model = Test
        fields = ('classes', 'name')

当我到达实际表单时,TestForm中“类”的下拉菜单仅为我在数据库中拥有的“类”数量提供了“Classes对象”。我想改变它,所以表单列出了类的名称,这些类作为'classname'存储在'Classes'模型中

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是提供对象的字符串表示,这将取代您在整个应用程序中访问类的任何位置

class Classes(models.Model):
    classcode = models.CharField(max_length=15)
    classname = models.TextField()
    students = models.ManyToManyField(User)

    def __str__(self):
        return "{0}: {1}".format(self.classcode, self.classname)

来自docs

  

将调用模型的__str__({2}上的__unicode__)方法来生成对象的字符串表示,以便在字段的选择中使用;提供自定义表示,子类ModelChoiceField和覆盖label_from_instance。