Django:将自定义ID /类/名称应用于表单域

时间:2012-02-10 01:27:29

标签: django modelform

我有一个具有以下代码的模型:

class PhillyCheese(models.Model):
    description = models.CharField(blank=True, max_length=255)
    quality = models.CharField(blank=True, max_length=255)
    packing_date = models.DateField(blank=True, null=True)
    shipping_date = models.DateField(blank=True, null=True)
    taste = models.CharField(blank=True, max_length=255)

和表格:

class PhillyCheeseForm(forms.ModelForm):
    class Meta:
        model = PhillyCheese

我正在尝试将jquery datepicker应用于模型中的两个DateField。唯一的问题是,我想确切地知道它在哪个领域。修改模板不是一种选择;我有许多其他可能通过该模板呈现的形式。

有人可以告诉我如何添加自定义ID /类/名称,以便我可以使用Jquery准确识别DateFields吗?

2 个答案:

答案 0 :(得分:7)

创建表单时,您可以将attrs(基于字典)传递给您的特定字段,然后将其用作字段属性。

from django import forms
date = forms.DateInput(attrs={'size': 10, 'id': 'date_field',})
print date.render('date', '')

#This will produce:
#<input type="text" id="date_field" name="date" size="10" />

答案 1 :(得分:4)

您可以在Django的文档中找到您的解决方案: https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#overriding-the-default-fields

在您的情况下,您的代码将是这样的:

from django import forms

class PhillyCheeseForm(forms.ModelForm):
    class Meta:
        model = PhillyCheese
        widgets = {
            'packing_date': forms.TextInput(attrs={'id':'foo', 'name':'foo'})
            'shipping_date': forms.TextInput(attrs={'id':'bar', 'name':'bar'})
    }

我实际上不知道是否有办法避免在idname属性中重复新的字段标识符。

编辑:

链接到Django 2.1的文档:https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/#overriding-the-default-fields