7

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

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 应用于模型中的两个 DateFields。唯一的问题是,我想准确说明它属于哪个领域。修改模板不是一种选择;我有许多通过该模板呈现的其他可能形式。

谁能告诉我如何添加自定义 id/class/name,以便我可以使用 Jquery 准确识别 DateFields?

4

2 回答 2

8

创建表单时,您可以将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" />
于 2012-02-10T05:19:52.467 回答
6

您可以在 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'})
    }

我其实不知道有没有办法避免在idandname属性中重复新的字段标识符。

编辑:

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

于 2015-09-12T06:35:37.717 回答