2012-05-22 176 views
2

我已经在我的形式之一如下:Django的查询集

self.fields['advisor'].queryset = User.objects.filter(groups__name='advisor') 

唯一的问题是,它显示在下拉框中username。我想要做的是显示first_name,然后last_name,使其更具人性化。

任何想法?

回答

3

ModelChoiceFieldlabel_from_instance方法,该方法可以在子类更改为使用其他的东西比模型__unicode__方法。 https://docs.djangoproject.com/en/1.3/ref/forms/fields/#django.forms.ModelChoiceField.empty_label

+0

我了解这些文档是怎么说的,但是如何在'forms.py'中使用它? – Sevenearths

+0

谢谢...我现在明白了。我可以用'advisor = UserModelChoiceField(queryset = User.objects.filter(groups__name ='advisor'))''在'forms.py'中实现它。感谢:http://stackoverflow.com/a/2959870/563247 – Sevenearths

0

根据这一doc,试试这个快速和肮脏的代码:

u = User.objects.filter(groups__name='advisor') 
self.fields['advisor'].queryset = u.get_first_name_display() + " " + u.get_last_name_display() 
+0

哼哼......它不喜欢'get_first_name_display()' – Sevenearths

+0

请编辑您的文章添加用户的模型。 – Yohann

+0

这是django附带的默认用户 – Sevenearths