1

当只选择 2 或 3 列时,我无法弄清楚如何格式化 ModelChoiceField 的输出。

这是我的模型:

class ActsIdsModel(models.Model):
    releveAnnee = models.IntegerField(max_length=4, blank=False, null=False)
    releveMois=models.IntegerField(max_length=2, blank=False, null=False)
    noOrdre=models.IntegerField(max_length=2, blank=False, null=False)
    ...
    #many other fields
    ...
    def __unicode__(self):
        releveAnnee=vn.variablesNameDic['releveAnnee'] + "=" + str(self.releveAnnee)
        releveMois=vn.variablesNameDic['releveMois'] + "=" + str(self.releveMois)
        noOrdre=vn.variablesNameDic['noOrdre'] + "=" + str(self.noOrdre)
        return releveAnnee + ", " + releveMois + ", " + noOrdre

下面的代码有效,但我得到了所有的列(所以对我的目的来说效率不高):

class ActsAddForm(forms.Form):
    actsToValidate=forms.ModelChoiceField(queryset=ActsIdsModel.objects.filter(validated=0))

这有效

但是下面的代码不起作用

class ActsAddForm(forms.Form):
    actsToValidate=forms.ModelChoiceField(queryset=ActsIdsModel.objects.values("releveAnnee", "releveMois", "noOrdre").filter(validated=0))

这不行!!

如何解决问题?似乎当我选择列时,我的模型的 unicode 函数不再被调用。正确的?

4

1 回答 1

2

使用.only()方法代替.values()

https://docs.djangoproject.com/en/1.5/ref/models/querysets/#django.db.models.query.QuerySet.only

于 2013-09-13T10:27:01.203 回答