Размещение поля <select>с использованием шаблонов Django с пользовательскими стилями начальной загрузки - PullRequest
0 голосов
/ 25 сентября 2018

У меня проблемы с подключением моего html css javascript front-end с django.У меня есть html шаблоны, которые выглядят и работают точно так же, как я хочу их.Я могу без проблем отображать данные, когда я вызываю поле django, которое является частью моего текущего представления, используя:

<a>{{ thing.attribute }}</a>

Это прекрасно работает.

Моя проблема возникает при попыткеподключить форму к представлению django, которое я создал для обновления и создания записей с помощью действия POST.Например, при использовании тематического шаблона mdbootstrap я реализовал объект html <select>, подобный следующему:

<select type="select" class="mdb-select" id="fieldOne">
    <option value="0">Something</option>
    <option value="1">Something</option>
    <option value="2">Something</option>
</select>

Это работает и выглядит точно так же, как я хочу, так же, как правильно используетправильные css и javascript.

Когда я хочу поместить объект формы django вместо того же поля, я должен назвать его так:

<div class="mdb-select">{{ thing.attribute }}</div>

Я должен назвать это как <div> в django, и это ломает мои css и javascript, таким образом, не отображается правильно и не может использоваться.Я вижу возвращаемые данные, когда смотрю на обработанные html в инструментах разработчика, поэтому я знаю, что мои django представления и формы работают.

Есть ли способ вызвать объект djangoвсе еще используя теги <select> в моем шаблоне html?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете отобразить поле выбора, используя Django ModelChoiceField.Когда вы используете эту форму в шаблоне, используя {{yourForm.select_field_name}} , она будет отображаться как с

id: id_select_field_name
name: select_field_name

Cssклассы, которые вам нужно связать, включены в attrs

from django import forms
class yourForm(forms.Form):
    select_field_name=forms.ModelChoiceField(queryset=recieptDetail.objects.all(), widget = forms.Select(attrs = {'class':"class-name",'onchange' : "jsFunction();"}))
0 голосов
/ 25 сентября 2018

1) Если вы используете формы моделей, выполните одно из них: используйте django widget_tweaks , а затем в своем шаблоне сделайте следующее:

{% load widget_tweaks %}

<label>{{my_form.field.label}}</label>
{% render_field my_form.field class="mdb-select" name="field" %}

ИЛИ

class NewSomethingForm(ModelForm):
class Meta:
    model = Account
    fields = ['name', 'last_name', 'description']

def __init__(self, *args, **kwargs):
    self.fields['description'].widget = forms.Textarea(attrs={'class': 'md-textarea', 'style': 'height: 75px'})`enter code here`

2) Если вы не используете формы моделей, попробуйте в своем шаблоне следующее:

<select type="select" class="mdb-select" id="fieldOne" name=field>
    <option value="my_form.field_name.field.choices.0">my_form.field_name.field.choices.1</option>
    <!–– follow same sequence -- >
</select>

Не забудьте указать выпадающий элементимя, соответствующее полю в форме.

...