我有两个表(Subject
和Languae
),每个表只有一个属性subject
和language
。在相对表单的字段中,我想看到一个下拉菜单,其中包含属性的值,但是使用以下代码:
lang = forms.ModelChoiceField(queryset=Language.objects.order_by('?'), required=False, label='What language want to search?')
subject = forms.ModelChoiceField(queryset=Subject.objects.order_by('?'), required=False, label='Whitch subject you want to search?')
我看到Subject object
和Language object
的下拉菜单与另一个相同。
如何显示对象的实际值?
答案 0 :(得分:3)
最简单的解决方案是实施Language
和Subject
模型__unicode__
方法,使其返回您要显示的属性(或基于任何属性组合构建的任何unicode字符串或随你)。在你的情况下:
class Subject(models.Model):
subject = models.CharField(....)
def __unicode__(self):
return self.subject
和语言同上
有关更高级的用法,请在此处记录:https://docs.djangoproject.com/en/1.6/ref/forms/fields/#modelchoicefield
请注意,您实际上不必创建ModelChoiceField
子类来覆盖label_from_instance
- 您还可以使用{对ModelChoiceField
实例进行monkeypatch您的表单lambda