【问题标题】:Django: Applying a custom id/class/name to a formfieldDjango:将自定义 id/class/name 应用于表单域
【发布时间】:2012-03-02 13:15:14
【问题描述】:

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

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/class/name 以便我可以使用 Jquery 准确识别 DateFields?

【问题讨论】:

    标签: django modelform


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      创建表单时,您可以将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" />
      

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 2011-12-18
        • 2021-01-29
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多