Django и HTML - как применить стилизацию к конкретным ответам

Я работаю над проектом Django, где у меня есть форма опроса и соответствующий синтаксис HTML :

<label for="id_form-{{ forloop.counter0 }}-answer">Answer:</label>
        
        
        {% for answer in answers %}
            <label for="id_form-{{ forloop.counter0 }}-answer">
                <input type="radio" name="form-{{ forloop.parentloop.counter0 }}-answer" id="id_form-{{ forloop.counter0 }}-answer" value="{{answer.id}}">
                {{answer.text}}

                {% if answer.image %}
                    <img src="/static/mysurveys/{{answer.image}}.png">
                {% endif %}
            </label>
        {% endfor %}

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

<label for="id_form-{{ forloop.counter0 }}-answer">Answer:</label> 
      
      <div class="circle-container">
        <label for= 'id_form-{{ forloop.counter0 }}-answer' class='center'>
          <input type="radio" name="form-{{ forloop.parentloop.counter0 }}-answer" id="id_form-{{ forloop.counter0 }}-answer" value="{{answer.id}}">
          <img src="/static/mysurveys/female_neutral.png">
      </label>
  
      <label for= 'relaxed' class='deg22_5'>
          <input type="radio" name="form-{{ forloop.parentloop.counter0 }}-answer" id="id_form-{{ forloop.counter0 }}-answer" value="{{answer.id}}">
          <img src="/static/mysurveys/female_relaxed.png">
      </label>

Но с этим кодом ответ не записывается в базу данных, и я получаю ошибку, которая гласит: Formset is NOT valid. [{'answer': ['Это поле обязательно']}]. Пожалуйста, сообщите мне о любых идеях по решению этой проблемы. На всякий случай, вот также мои взгляды:

from django.forms import ModelForm
class ResponseForm(ModelForm):
    class Meta:
        model = Response
        fields = ['question', 'answer']
    
    def __init__(self, *args, user=None, **kwargs):
        self.user = user
        super().__init__(*args, **kwargs)

    def save(self, commit=True):
        response = super().save(commit=False)
        response.user = self.user
        return response.save()

def take_questionnaire_fs(request, questionnaire_id):

    ResponseFormSet = modelformset_factory(Response, form=ResponseForm, extra=0)
    if request.method == 'POST':
        formset = ResponseFormSet(request.POST or None, request.FILES, form_kwargs={'user': request.user})
        if formset.is_valid():
  
            print("Formset is valid")
            formset.save()
            return HttpResponseRedirect(reverse ('questionnaires:questionnaire_index'))
   
        else:
            print("Formset is NOT valid")
            print(formset.errors)
            print(formset.non_form_errors())
        
    questionnaire = Questionnaire.objects.get(id=questionnaire_id)
    questions = Question.objects.filter(questionnaire_id=questionnaire_id)
    answers = Answer.objects.filter(questionnaire_id=questionnaire_id)

    return render(request, 'questionnaires/questionnaire_lec.html', {
        'questions': questions,
        'answers': answers,
        'questionnaire': questionnaire,
        })

А мои модели:

User = settings.AUTH_USER_MODEL

class Questionnaire(models.Model): 
    name = models.CharField(max_length=255) 
    text = models.CharField(max_length=200)

    def __str__(self):
        return self.name

class Question(models.Model):
    text = models.CharField(max_length=200)
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE, related_name='questions')
    def __str__(self):
        return self.text

class Answer(models.Model):
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE, related_name='answers', default='')
    text = models.CharField(max_length=200)
    image = models.CharField(null=True, max_length=20)
    
    def __str__(self):
        return self.text
 
class Response(models.Model):
    user = models.ForeignKey(User, on_delete = models.CASCADE) 
    date = models.DateTimeField(auto_now_add=True)
    question = models.ForeignKey(Question, on_delete = models.CASCADE)
    answer = models.ForeignKey(Answer, on_delete = models.CASCADE)
    def __str__(self):
        return '%s - %s - %s - %s' % (self.user, self.question, self.answer, self.date)

Спасибо!

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