【问题标题】:I need help in django我需要 django 的帮助
【发布时间】:2022-01-10 22:39:51
【问题描述】:

我想打印第一学期第一学期的科目和第二学期第二学期的科目等等。看这张照片 cick in image here

也许views.py中有一些我没有想到的逻辑。有人可以帮助我解决这个逻辑以及如何在semester.html页面中呈现它 我的代码在这里。

models.py

from django.db import models
from django.db.models.base import ModelState

# Create your models here.
class Course(models.Model):
    faculty = models.CharField(max_length=100)

class Semester(models.Model):
    sem = models.CharField(max_length=100)
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
    
    def __str__(self):
        return F"Semester {self.sem} at Faculty {self.faculty}"


class Subject(models.Model):
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
    sem = models.ForeignKey(Semester, on_delete=models.CASCADE)
    subject_name = models.CharField(max_length=100)

    def __str__(self):
        return str(self.id)

views.py

from django.shortcuts import render
from django.views import View
from django.contrib import messages
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, UsernameField
from django import forms
from django.utils.translation import gettext, gettext_lazy as _
from .forms import CustomerRegistrationForm
from .models import Course, Semester, Subject

# Create your views here.

def home(request):
    return render(request, 'app/home.html')

def faculty(request):
    course = Course.objects.all()
    return render(request, 'app/faculty.html', {'course':course})

class SemesterView(View):
    def get(self, request,id):
        obj = Course.objects.get(id=id)
        print(obj)
        semobj = Semester.objects.filter(faculty=obj)
        print(semobj)
        subobj = Subject.objects.filter(faculty=obj)
        print(subobj)
        return render(request, 'app/semester.html', {'obj':obj, 'semobj':semobj, 'subobj':subobj})

semester.html

{% extends 'app/base.html' %}
{% load static %}
{% block semester %}
<div class="bsc-csit">
    <div class="container">
        <div class="row" style="margin-top:90px; padding-top:20px;">
            {% for so in semobj %}
            <div class="col-md-3">
                <div class="bsccsit-box">
                    <h3 style="color: black">{{so.sem}}</h3>
                    <ul>
                        {% for suo in subobj %}
                        <li><a href="">1.{{suo.subject_name}}</a></li>
                        {% endfor %}
                        
                    </ul>
                </div>  
            </div>
            {% endfor %}
        </div>
    </div>
</div>
{% endblock semester %}

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    尝试在您的模板中替换以下内容:

    {% for subject in so.subject_set.all %}
        <li><a href="">{{ forloop.counter }}. {{subject.subject_name}}</a></li>
    {% endfor %}          
    

    您可以通过subject_set.all 获取特定学期的所有Subject

    您还可以使用{{ forloop.counter }} 提供带有相关主题的枚举数。

    【讨论】:

  • 是的,你是对的,我已经编辑了答案!没问题的,
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签