Спасибо, я ценю помощь.
Я хочу отображать различные шрифты для пользователей из выпадающего списка. Выпадающий список получает свои значения из модели, которая имеет опцию choices. Проблема в том, что когда выбирается определенный шрифт, он сохраняется в базе данных, но "значение" не перехватывается.
<Модель:
class Company(models.Model):
name = models.CharField(max_length=100, null=True, blank=True
first_font = models.CharField(max_length=100, choices=header_font, blank=True, null=True)
second_font = models.CharField(max_length=100, choices=body_font, blank=True, null=True)
class Meta:
verbose_name_plural = "Companies"
def __str__(self):
return self.name
Forms.py
class CompanyForm(forms.ModelForm):
def __init__(self, *args, user=None, **kwargs):
super(CompanyForm, self).__init__(*args, **kwargs)
self.fields['first_font'].widget.attrs = {'class': 'select',}
self.fields['second_font'].widget.attrs = {'class': 'select',}
class Meta:
model = Company
fields = ('first_font', 'second_font',)
Вывод шаблона:
Я использовал HTMX, чтобы взять значение выпадающего списка и передать его в частичный шаблон, чтобы его можно было вставить в класс и вернуть хорошо отформатированное предложение с примененным шрифтом.
<form action="" method="POST" enctype="multipart/form-data">
<div class="column is-4">
<h2>Choose fonts for documents</h2>
<div class="field">
<label class="label">Heading Font</label>
<div class="select is-fullwidth"
name = "heading_font"
hx-get="{% url 'main_font' %}"
hx-target="#main-font"
hx-trigger="change"
>
{{ form.first_font }}
</div>
<div id="main-font">
<p>This is your font</p>
</div>
</div>
<div class="field">
<label class="label">Body Font</label>
<div class="select is-fullwidth"
name = "body_font"
hx-get="{% url 'secondary_font' %}"
hx-target="#secondary-font"
hx-trigger="change"
>
{{form.second_font }}
</div>
<div id="secondary-font">
<p>This is your font</p>
</div>
</div>
</div>
</form>
Вот пример частичного шаблона для второго шрифта:
<p class="second-display">
This is your main body font
<p>{{chosen}}</p>
</p>
<style>
.second-display {
font-family: {{chosen}};
font-size: 30px;
font-style: bold;
margin-top: 20px;
margin-bottom: 20px;
}
</style>
И, наконец, два частичных представления, которые будут возвращать вышеуказанный шаблон для secondary_font. Проблема в том, что значение, которое должно быть сохранено в переменной "selected", не ловится и не отправляется в вышеупомянутый partial. Как мне получить нужное "значение"?
@login_required(login_url='login')
def main_font(request):
chosen = request.GET.get('heading_font')
return render(request, 'company/first-font.html', {'chosen': chosen})
@login_required(login_url='login')
def secondary_font(request):
chosen = request.GET.get('body_font')
return render(request, 'company/second-font.html', {'chosen': chosen})
Буду признателен за любую помощь и подсказки.