Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django选择字段-更改显示内容_Django_Django Forms - Fatal编程技术网

Django选择字段-更改显示内容

Django选择字段-更改显示内容,django,django-forms,Django,Django Forms,我有一个ModelForm,它呈现一个select字段,因为它指向一个ForeignKey。呈现表单时,它将显示基于ForeignKey的_uunicode__;定义的选项 例如,我在表单中有一个选择字段,用于从联系人模型中选择联系人。接触模型有: def __unicode__(self): return self.first_name 因此,我选择字段中的联系人列表仅显示名字 我知道我可以更改_uunicode__;定义,但我想知道如何根据选择字段的显示位置更改选择选项中显示的内容。换

我有一个ModelForm,它呈现一个select字段,因为它指向一个ForeignKey。呈现表单时,它将显示基于ForeignKey的_uunicode__;定义的选项

例如,我在表单中有一个选择字段,用于从联系人模型中选择联系人。接触模型有:

def __unicode__(self):
  return self.first_name
因此,我选择字段中的联系人列表仅显示名字

我知道我可以更改_uunicode__;定义,但我想知道如何根据选择字段的显示位置更改选择选项中显示的内容。换句话说,在某些形式下,我需要展示一些东西,比如:

{{contact.first{u name}}-{{contact.phone{u number}

在其他方面,我只想展示:

{{contact.first_name}

如何调整ModelForm,使特定字段,即指向ForeignKey model Contact的select字段显示联系人的全名?

据我所知,这是一个ModelChoiceField,因此您可以从\u实例覆盖标签\u。供参考

class YourNewChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return "%s -- %s" % (obj.name, obj.phone_number)
在表单内部使用新字段

class YourForm(ModelForm)
    # As you'd normally define your ModelChoiceField field
    contact = YourNewChoiceField(queryset=...) 

    class Meta:
        fields = ['contact', ...]

这是很有希望的-但是这将如何应用于ModelForm,因为form是基于models.Model创建的。因此,我使用MyFormModelForm类代替MyFormforms.Form类。在此基础上,我定义了要使用的模型,以及该模型中要使用的字段。我不太确定如何将新的YourNewChoiceField分配给ModelForm,如果这使得senseI可能已经找到了我的答案,但它看起来只在1.9中可用,而我使用的是1.8label_from_实例在中也可用。至于你的第一个问题,你简单地重新定义了你表格中的字段,我更新了答案。