Django: вложенный цикл forloop не отображается

У меня есть модель "Домашние задания", и у меня есть модель "Оценки", и я пытаюсь добавить оценку и показать ее в каждом домашнем задании.

Все работает отлично, но, видимо, я не могу сохранить или даже заставить форму grades_form отображаться внутри цикла в цикле.

Models.py

class Hw_upload(models.Model):
    title = models.CharField(blank=True, max_length=255, null=True)
    description = models.TextField(blank=True, max_length=255, null=True)
    document = models.FileField(blank=True, upload_to='documents/', null=True)
    creation_date = models.DateTimeField(default=timezone.now)  
    hw_author = models.ForeignKey(User, on_delete=models.PROTECT, related_name="hw_author")
    activity = models.ForeignKey(Activity, on_delete=models.CASCADE, related_name="hw_uploads", null=True)   

class Grades(models.Model):
    grade = models.PositiveIntegerField(validators=[MaxValueValidator(100)], blank=True, null=True) 
    hw_upload = models.ForeignKey(Hw_upload, on_delete=models.CASCADE, related_name="hw_grades", null=True)  

Forms.py

class Hw_gradeForm(ModelForm):
    class Meta:
        model = Grades
        fields = ['grade']          

        widgets = {
            'grade': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': '0-100'})
        }    

Views.py

def activity(request, id):
    if not request.user.is_authenticated:
        return render(request, "auctions/login.html")   
    activity = Activity.objects.get(id=id) 
    try:
        hw_upload = Hw_upload.objects.get(id=id) 
    except Hw_upload.DoesNotExist:
        hw_upload = None    
    try:          
        grades = Grades.objects.get(id=id)
    except Grades.DoesNotExist:
        grades = None          
    if request.method == 'POST':
        form = Hw_uploadForm(request.POST, request.FILES or None)
        if form.is_valid():         
            upload_hw = form.save(commit=False)
            upload_hw.hw_author = request.user             
            upload_hw.activity = Activity.objects.get(id=id) 
            upload_hw.save()

    if request.method == 'POST':
        grade_form = Hw_gradeForm(request.POST, request.FILES or None)
        if grade_form.is_valid():         
            grade_hw = grade_form.save(commit=False)             
            grade_hw.hw_upload = Hw_upload.objects.get(id=id) 
            grade_hw.save()

            url = reverse('activity', kwargs={'id': id})
            return HttpResponseRedirect(url) 

    return render(request, "auctions/activity.html", {
        "activity": activity,  
        'hw_upload': hw_upload,
        'grades': grades,
        'grade_form': Hw_gradeForm(),
        "form": Hw_uploadForm(),
        "title": "Send reply for activity:"
        })

urls.py

path("auction/course/module/activity/<str:id>", views.activity, name="activity"), 

template.html

<!-- Uploads -->
<h5 style="padding: 5px;"><span class="badge badge-secondary badge-pill mx-1">{{ activity.hw_uploads.count }}</span>Uploads:</h5>
<div>
{% for hw_upload in activity.hw_uploads.all %}
<div style="border:solid 1px lightgray; padding: 5px;">
    <h5 style="padding-top: 5px; padding-left: 5px;">{{ hw_upload.hw_author }}</h5>
    {% if hw_upload.title %}
    <h5 style="padding-top: 5px; padding-left: 10px;">{{ hw_upload.title }}</h5>
    {% endif %}
    <ul>
        {% if hw_upload.description %}
    <h6 style="padding-top: 5px;">{{ hw_upload.description }}</h6>
{% endif %}

            <!-- File -->
            {% if hw_upload.document %}
            <a href="{{ hw_upload.document.url }}" target="_blank" id="img">{{ hw_upload.document }}</a>
            {% else %}
            No files uplodaded
            {% endif %}
        </ul>

</div>
</div>
{% endfor %}

<!-- Uploads -->
{% for hw_upload in activity.hw_uploads.all %}
<div class="row">
    <div class="column" style="background: linear-gradient(90deg, white 0%, rgb(111, 255, 238) 100%);">

      by <span style="font-weight: bold;">{{ hw_upload.hw_author }}</span> on {{ hw_upload.creation_date }}
      <br>

    </div>

    <div class="column" style="background: lightblue;
    background: linear-gradient(90deg, rgb(111, 255, 238) 0%, rgb(0, 255, 225) 100%);">
      <h2></h2>
      <p>    
        <h2>{{ hw_upload.title }}</h2>
        <br>
                <h5>{{ hw_upload.description }}</h5>
        <!-- Image -->
        {% if hw_upload.document %}
        <img src="{{ hw_upload.document.url }}" id="img">
        {% else %}
No files uploaded
        {% endif %}    
</p>
    </div>

    <div class="column" style="border-top-right-radius: 10px; border-bottom-right-radius: 10px; background: lightblue;
    background: linear-gradient(90deg, rgb(111, 255, 238) 0%, rgb(0, 255, 225) 100%); padding: 5px;">
      <h2></h2>
      <p>    

        <!-- Grade activity -->
{% for grades in hw_upload.hw_grades.all %}
<form>
        <h5>{{ grade_form }}</h5>
        <input class="button" type=submit value="Send">
    </form>
                <h5>Grade: {{ grades.grade }}</h5>
  {% endfor %}
</p>
    </div>

  </div> 
{% endfor %}

Заранее большое спасибо за вашу мудрость!

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