0

所以我使用Django的用戶模型如何(從django.contrib.auth.models導入用戶),並通過使用的ModelForm(從Django中創建的模型形式。表單導入ModelForm)。當我將它顯示在模板上時,它會顯示在選擇框上作爲用戶名。我想顯示它是first_name和last_name。我們可以格式化爲標準格式顯示在Django模板

THISIS我在HTML

<form class="form-horizontal" method="post" role="form"> 
    {% csrf_token %} 
    <fieldset> 
     <legend>{{ title }}</legend> 

     {% for field in form %} {% if field.errors %} 
     <div class="form-group"> 
      <label class="control-label col-sm-2">{{ field.label }}</label> 
      <div class="controls col-sm-10"> 
       {{ field }} 
       <p class="formError"> 
        {% for error in field.errors %}{{ error }}{% endfor %} 
       </p> 
      </div> 
     </div> 
     {% else %} 
     <div class="form-group"> 
      <label class="control-label col-sm-2">{{ field.label }}</label> 
      <div class="controls col-sm-10"> 
       {{ field }} {% if field.help_text %} 
       <p class="help-inline"><small>{{ field.help_text }}</small></p> 
       {% endif %} 
      </div> 
     </div> 
     {% endif %} {% endfor %} 
    </fieldset> 

    <div class="form-actions" style="margin-left: 150px; margin-top: 30px;"> 
     <button type="submit" class="btn btn-primary">Submit</button> 
    </div> 
</form> 

回答

2

子類ModelChoiceField使用形式,並覆蓋label_from_instance顯示姓氏和名字代碼。

from django.forms import ModelChoiceField 

class UserChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "%s %s" % (obj.first_name, obj.last_name) 

然後在您的模型表單中使用選擇字段。

from django import forms 
from django.contrib.auth.models import User 

class MyModelForm(forms.ModelForm): 
    user = UserChoiceField(queryset=User.objects.all()) 
    ... 
+0

感謝您的答覆。如果User是另一個模型的foregin_key,怎麼做?像模型表單是用於另一個模型,但用戶是模型中的一個字段。 –

+0

上述形式'MyModelForm'是對於具有一個外鍵'User'模型'MyModel'。自定義選擇字段意味着,用戶將顯示爲'的''而不是'。這不是你想要的嗎?如果沒有,請用一些代碼更新您的答案,以幫助解釋。 – Alasdair

+0

是的,這是我想要的。我有一個名爲PermissionAssignment模型 –