Спасибо, я ценю помощь.

Я хочу отображать различные шрифты для пользователей из выпадающего списка. Выпадающий список получает свои значения из модели, которая имеет опцию 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})

Буду признателен за любую помощь и подсказки.

Вернуться на верх