我正在使用以下表单:

class InvoiceModelForm ( forms.ModelForm ):

    u = forms.ModelChoiceField ( queryset = User.objects.all () )

但是在表单字段中却显示了用户名。我想更改它以使用名字和姓氏。

我不想改变
def __str__(self):
    return self.username

如何更改表单字段中显示的值?

最佳答案

参见https://docs.djangoproject.com/en/2.0/ref/forms/fields/#modelchoicefield的最后一部分

因此,在您的情况下,您可以执行以下操作:

from django.forms import ModelChoiceField

class NameChoiceField(ModelChoiceField):

    def label_from_instance(self, obj):
        return f'{obj.first_name} {obj.last_name}'
进而,
class InvoiceModelForm(forms.ModelForm):

   u = NameChoiceField(queryset=User.objects.all())

关于django - ModelChoiceField表单字段上的自定义标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48409264/

10-10 06:46