可能是一个非常新手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'模型中
有人能指出我正确的方向吗?
答案 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。