Попытка добавить атрибут класса к элементу ввода в форме django. - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь добавить атрибут класса к некоторым элементам ввода в моей форме Django, но я не уверен, как это сделать конкретно.В настоящее время у меня просто есть атрибут placeholder, и я хотел бы начать добавлять классы / идентификаторы, чтобы я мог стилизовать форму.У меня два вопроса.Первый - как мне добавить атрибут class / id к существующему атрибуту (ам) местозаполнителя в следующем коде:

forms.py

class EditUserProfileForm(forms.ModelForm):
    class Meta:
        model = models.UserProfile
        fields = '__all__'

        widgets = {
            'description': forms.TextInput(attrs={'placeholder': 'Motto'}),
            'city': forms.TextInput(attrs={'placeholder': 'City'}),
            'website': forms.TextInput(attrs={'placeholder': 'Website/Brand'}),
            'phone': forms.TextInput(attrs={'placeholder': 'Phone Number'}),
            }

и, во-вторых, послеЯ делаю это, мне нужно затем сделать миграцию / миграцию?Насколько я понимаю, вам нужно мигрировать всякий раз, когда было сделано изменение уровня базы данных, но я не уверен, что это означает полностью.

Любое понимание всегда очень ценится.Спасибо

Ответы [ 3 ]

0 голосов
/ 20 октября 2018

Вы можете использовать Настройки виджетов .С помощью этого вы можете добавлять классы к вашему входу и редактировать другой атрибут.Вот хороший учебник .

Это лучший вариант.

0 голосов
/ 21 октября 2018

Ниже я изменил вашу форму.На ваш второй вопрос Do you need to call makemigration? Ответа нет.Вам нужно только вызвать makemigration и выполнить миграцию, когда вы вносите какие-либо изменения в файл models.py, views.py или forms.py и т. Д. Вам не нужно.

class EditUserProfileForm(forms.ModelForm):

    class Meta:
        model = models.UserProfile
        fields = '__all__'

    widgets = {
        'description': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Motto'}),
        'city': forms.TextInput(attrs={'class':'#add class name','placeholder': 'City'}),
        'website': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Website/Brand'}),
        'phone': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Phone Number'}),
        }

Примечание.Не нужно добавлять имя класса, если у вас нет особых требований.Если вы хотите добавить имя класса для CSS, то вы можете просто написать id_description, id_city, Вы можете проверить свой идентификатор в инструменте разработчика браузера.

0 голосов
/ 20 октября 2018

Во-первых, чтобы добавить класс в ваши виджеты, просто объявите его так же, как вы делали это для атрибута заполнителя.Например ...

widgets = {
            'description': forms.TextInput(attrs={'class': 'my_class', 'placeholder': 'Motto'},)
           }

Во-вторых, вы должны выполнять makemigrations / migrate всякий раз, когда вы меняете свои модели.Для того, чтобы настроить таблицы базы данных для новых моделей.Подробности читайте в Django docs.

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