2013-05-13 33 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

相关问题