2013-05-13 66 views
0

是否可以將某些屬性寫入模型字段,稍後可以使用該字段來區分模板中的不同字段?如何將自定義屬性設置爲可以在Django中使用ModelForm的模板中使用的模型?

model.py

from django.db import models 

class Person(models.Model): 
    first_name = models.CharField("i am the Label", max_length=30) 
    last_name = models.CharField("i am other Label", max_length=30, customattr="Custom") 

forms.py

class PersonForm(ModelForm): 
    class Meta: 
     Person 

template.html

<form action="" method="post">{% csrf_token %} 
    {% for field in form %} 
     {% ifequal field.customattr 'Custom' %} # HOW COULD THIS WORK? 
      <p>Hello world.</p> 
      {{ field }} 
     {% else %} 
      <p>This is not Custom</p> 
      {{ field }} 
     {% endifequal %} 
    {% endfor %} 
<input type="submit" value="Submit" /> 
</form> 

任何提示?

+0

可能重複? http://stackoverflow.com/questions/8407837/django-custom-attributes-for-model-fields – 2013-05-13 18:25:43

回答

0

不太可能;您的模板代碼中的field是一個表單字段,而不是一個模型字段。我將表示邏輯從模型轉移到模板,做這樣的事情:

<form action="" method="post">{% csrf_token %} 
    {% for field in form %} 
     {% if field.name == 'last_name' or field.name == 'another_field' %} 
      <p>Hello world.</p> 
      {{ field }} 
     {% else %} 
      <p>This is not Custom</p> 
      {{ field }} 
     {% endif %} 
    {% endfor %} 
<input type="submit" value="Submit" /> 
</form> 

0

(在== operator是在Django 1.2中加入)我不明白爲什麼喲想幹什麼這個。如果您想自定義HTML您的ModelForm場可以覆蓋它是這樣的:

class PersonForm(ModelForm): 
    class Meta: 
     Person 
    first_name = forms.CharField(
     required = True, 
     widget = forms.TextInput(attrs={'style':'width:100px;'}, 
    ) 

這樣你就可以告訴Django你想如何使您的HTML。 您可以在文檔中找到更多詳細信息https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets

+0

嗨@mounir我喜歡在一個附加屬性的幫助下組字段。我正在計劃用字段迭代進行分組...... – Jurudocs 2013-05-14 18:32:49

相關問題