Django: применение собственного идентификатора / класса / имени к полю формы - PullRequest
5 голосов
/ 10 февраля 2012

У меня есть модель со следующим кодом:

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 к двум полям DateFieldsв модели.Единственное, я хотел бы уточнить, в какой области это идет.Изменение шаблона не вариант;У меня есть много других возможных форм, которые отображаются с помощью этого шаблона.

Может кто-нибудь показать мне, как добавить пользовательский идентификатор / класс / имя, чтобы я мог точно определить поля DateFields с помощью Jquery?

Ответы [ 2 ]

7 голосов
/ 10 февраля 2012

При создании форм вы можете передать 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" />
4 голосов
/ 12 сентября 2015

Вы можете найти свое решение в документации 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'})
    }

Я на самом деле не знаю, есть лиспособ избежать повторения нового идентификатора поля в атрибутах id и name.

РЕДАКТИРОВАТЬ:

Ссылка на документацию по Django 2.1: https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/#overriding-the-default-fields

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...