#mysql #django #django-views #django-templates #django-orm
Вопрос:
в моем проекте у меня есть таблица с вопросами по конкретным темам и подтемам. Я хочу посчитать количество вопросов по каждой подтеме для определенного идентификатора темы. здесь у меня есть запрос с именем подтемы, который содержит информацию о подтемах определенной темы, а другой-список с именем totall, который содержит общее количество вопросов по подтемам, которые присутствуют в запросе с именем подтемы .
в моделях.py таблица вопросов
class Questions(models.Model):
grade = models.ForeignKey(Add_Grade,on_delete=models.CASCADE, default = 1)
topic = models.ForeignKey(Add_Topics, on_delete= models.CASCADE , default = 1)
sub_topic = models.ForeignKey(Sub_Topics, on_delete= models.CASCADE, default = 1)
question = models.CharField(max_length=100)
image= models.URLField(null=True)
difficulty=models.CharField(max_length=100, default='')
class Meta:
db_table = 'questions'
в views.py
def showassess(request):
if request.method=='POST':
classname=request.POST.get("classname")
topicid=request.POST.get("topicid")
topicname=request.POST.get("topicname")
print(topicname,topicid)
gradeid=request.POST.get("gradeid")
subtopics=Sub_Topics.objects.filter(topic__id=topicid)
print(subtopics)
listt=list(Sub_Topics.objects.values_list('id',flat=True).filter(topic__id=topicid))
q=0
totall=[]
for p in listt:
if q <= len(listt):
totalques=Questions.objects.filter(sub_topic__id=listt[q]).count()
totall.append(totalques)
q=q 1
#totalques=Questions.objects.filter(sub_topic__in=listt)
print(listt)
print(totall)#list contain no of questions of each subtopic having specic topic_id
context={
'totall':totall,
'topicid':topicid,
'topicname':topicname,
'classname':classname,
'gradeid':gradeid,
'subtopics':subtopics,
}
return render(request,"assessment.html",context)
выход есть
[1, 2, 3, 4]—>список (содержит идентификатор подтемы )
[3, 2, 1, 1]—>всего (всего нет вопросов по подтемам, упомянутым выше[например: подтема, имеющая идентификатор = 1, имеет
всего 3 вопроса ,подтема id=2 есть 2 вопроса]
в шаблоне я просто хочу просто проверить отсутствие вопросов, которые пользователь вводит в поле ввода номера для каждой подтемы из числа вопросов, которые оцениваются выше в views.py.цель состоит в том, чтобы ограничить пользователя, чтобы он мог ввести правильное отсутствие вопросов. В контексте views.py, У меня есть запрос с именем подтемы и список, содержащий общее количество вопросов по каждой подтеме, присутствующей в запросе. как я могу использовать эти данные для получения требуемого результата или есть ли лучший способ получить требуемый сценарий.
<div class="card text-center">
<div class="card-header">
Subtopics of {{topicname}}
</div>
<div class="card-body">
<form id="assessment" action="selectassess" method="POST">
{% csrf_token %}
{% for t in subtopics %}
<input type="hidden" name="classname" value="{{classname}}">
<input type="hidden" name="gradeid" value="{{gradeid}}">
<input type="hidden" name="topicname" value="{{topicname}}">
<input type="hidden" name="topicid" value="{{topicid}}">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="assess" value="{{t.id}}" >
<label class="form-check-label" for="assess">{{t.subtopic}} {{p}}</label>
</div>
<input type="number" placeholder="No of ques to be selected" min="0" max="10" name="quesno" width="60"><br>
{% endfor %}
</form>
</div>
<div class="card-footer">
<input class="btn btn-primary" form="assessment" type="submit" value="Submit">
</div>
</div>