我想在模型字段中添加一些信息,以便在表单呈现时使用。我的真实模型有大约15个不同字段类型的值(添加和删除,因为我开发),它几乎完成了我需要的所有内容,所以我宁愿不为它们创建自定义模型字段。
我想做这样的事情:
from django.db import models
class MyModel(models.Model):
cost = models.DecimalField(max_digits=5,
decimal_places=2,
custom_info= {'glyph': 'glyphicon glyphicon-usd' }
)
然后在我的表单模板中使用该字形,就像我使用verbose_name或help_text一样。
答案 0 :(得分:1)
我学到的东西from a post just the other day。是否会在表单上定义自定义信息而不是模型工作?
在formfield_callback
上定义forms.ModelForm
时,它会遍历表单字段,您可以对其进行操作。当您需要向窗口小部件添加css类并且不希望显式覆盖该字段时,这会派上用场。现在,您只需将formfield_callback = modify_form_field
放在您希望forms.ModelForm
显示的任何custom_info
上。
from django.db import models
def add_glyphicons(model_field):
form_field = model_field.formfield()
if isinstance(model_field, models.IntegerField):
form_field.custom_info = {'glyph': 'glyphicon glyphicon-usd'}
elif isinstance(model_field, models.CharField):
form_field.custom_info = {'glyph': 'glyphicon glyphicon-yen'}
return form_field
class MyModel(models.Model):
formfield_callback = add_glyphicons
class Meta:
model = MyModel
class MyOtherModel(models.Model):
formfield_callback = add_glyphicons
class Meta:
model = MyOtherModel