【问题标题】:Adding custom data to django model field将自定义数据添加到 django 模型字段
【发布时间】:2014-04-02 21:00:04
【问题描述】:

我想向模型字段添加一些信息,以便在表单呈现时使用。我的真实模型有大约 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 一样。

【问题讨论】:

  • 自定义表单而不是模型不是更容易吗?

标签: django django-models django-forms


【解决方案1】:

我学到的东西from a post just the other day。在表单而不是模型上定义自定义信息会起作用吗?

当您在forms.ModelForm 上定义formfield_callback 时,它将遍历表单字段并且您可以对其进行操作。当您需要向小部件添加 CSS 类并且不想显式覆盖该字段时,这会派上用场。现在您只需将formfield_callback = modify_form_field 放在您希望custom_info 出现的任何forms.ModelForm 上。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多