【问题标题】:Python Django, struggling to create a dynamic listPython Django,努力创建动态列表
【发布时间】:2021-12-30 05:47:04
【问题描述】:

我想在我的网站上创建一个部分,对于每个主题,可以找到指向相应过去论文的链接,但我很难获得任何输出。寻找想法:

我的意见.py:

def index(request):
    subjects = Subject.objects.all()
    context = {'subjects': subjects}
    return render(request, 'alevelspastpapers/index.html', context=context)

我的models.py:

class Subject(models.Model):
    subject = models.CharField(max_length=30)
    def __str__(self):
        return self.subject

class past_paper(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    exam_date = models.DateField('Examination Date')
    paper_number = models.IntegerField('Paper Number: ')
    paper_urllink = models.TextField()
    markscheme_urllink = models.TextField()
    solved_paperslink = models.TextField(null=True)
    def __str__(self):
        return f"{self.subject} Paper {self.paper_number}, {self.exam_date}"

我的html内容:

{% if subjects %} {% for subject in subjects %}
      <p>{{ subject.subject }}</p>
      {% for papers in subject.subject.past_papers_set.all %}
      <p>{{ papers.paper_urllink }}</p>
      {%endfor%} {% endfor %} {% endif %}

【问题讨论】:

    标签: python html django dynamic


    【解决方案1】:

    试试这个:

    {% for subject in subjects %}
        <p>{{ subject.subject }}</p>
        {% for past_paper in subject.past_paper_set.all %}
           <p> {{ past_paper.paper_urllink }} </p>
        {% endfor %}
    {% endfor %}
    

    为了获得更好的性能,您可以使用select_related,它只在一个查询中获取相关对象,如下所示:

    def index(request):
        subjects = Subject.objects.all().select_related()
        # rest of your code
    

    【讨论】:

    • 是的,这行得通,谢谢!
    • @RayyanS 我已编辑答案以提高性能检查
    【解决方案2】:

    将{% for papers in subject.subject.past_papers_set.all %} 替换为{% for papers in subject.past_papers_set.all() %}

    【讨论】:

    • 这样我得到以下错误:django.template.exceptions.TemplateSyntaxError: Could not parse the rest: '()' from 'subject.past_papers_set.all()'
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多