как использовать аргумент выбора внутри класса в качестве значения радиовхода в шаблоне Django

#python #django

#python #django

Вопрос:

Я хочу знать, как определить значения выбора для переключателя в шаблоне Django. Вот мой models.py

 RATING_CHOICES = ((1, "Weak"), (2, "Average"), (3, "Good"), (4, "Excellent"))
...
class Answer(models.Model):
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)   
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    answer = models.SmallIntegerField(choices=RATING_CHOICES, default=1)
  

В шаблоне я хочу присвоить значения моего RARING_CHOICES для радио в состоянии цикла.

 {% for question in questions %}
<li>{{ question }}</li>
<ul>
<input type="radio" value="">
<input type="radio" value="">
<input type="radio" value="">
<input type="radio" value="">
  </ul>

{% endfor %}
  

Views.py

 def index(request):
    context = { "questions": Question.objects.all(),
                "answers": Answer.objects.all(),
                "departments": Department.objects.all(),
                "semesters": Semester.objects.all(),
                "teachers": Teacher.objects.all(),
                "subjects": Subject.objects.all(),}
    return render(request, "evaluation/index.html", context)
  

Ответ №1:

Передайте значение RATING_CHOICE в контексте из представлений

 RATING_CHOICES = ((1, "Weak"), (2, "Average"), (3, "Good"), (4, "Excellent"))
context = { "questions": Question.objects.all(),
                "answers": Answer.objects.all(),
                "departments": Department.objects.all(),
                "semesters": Semester.objects.all(),
                "teachers": Teacher.objects.all(),
                "subjects": Subject.objects.all(),
                "rating_choices":RATING_CHOICES,
            }
  

В шаблоне запустите цикл for через rating_choices

 {% for question in questions %}
    <li>{{ question }}</li>
    <ul>

    {% for choice in rating_choices %}
       <input type="radio" value="{{choice.0}}">{{choice.1}}
    {% endfor %}

    </ul>

{% endfor %}
  

Комментарии:

1. Это сработало, но как насчет RATING_CHOICES в models.py ?

2. вы можете импортировать его из моделей. py, как из .models import RATING_CHOICES

3. Есть одна проблема, мистер Кумар, когда я выбираю выбор для одного вопроса и выбираю другой для другого вопроса, мой выбранный переключатель радио с первого вопроса на второй?

4. Имя должно быть разным в каждом случае. Это должно быть похоже на <тип ввода=»радио» значение=»{{выбор.0}}» имя=»вопрос_{{question.id }}»>

5. Я не знаю, как получить доступ к name=»question_{{question.id }}» на мой взгляд. Другие поля просты, например, teacher = request.POST.get(‘учитель’), но это сложно для меня.