首页 > 解决方案 > 如何在 django 中过滤这个?

问题描述

我正在开发一个 Django 项目(如 LMS),我想在模板中按主题过滤讲座,我做了一次,但现在我忘了怎么做。我怎样才能做到这一点?! 我想在Lecture中通过外键主题过滤它 这是我的models.py

from django.db import models
from django.utils.text import slugify

# Create your models here.

class Subject(models.Model):
    Title = models.CharField(max_length=150)
    Pic = models.ImageField(upload_to='media/')
    Test = models.CharField(max_length=300, null=True, blank=True)
    Slug = models.SlugField(unique=True, null=True, blank=True)

    def save(self, *args, **kwargs):
        self.Slug = slugify(self.Title, allow_unicode=True)
        super(Subject, self).save(*args, **kwargs)

    def __str__(self):
        return self.Title

class Lecture(models.Model):
    Subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    Title = models.CharField(max_length=150)
    Video = models.CharField(max_length=300)
    More_Info = models.TextField()
    Audio_Lecture = models.CharField(max_length=300)
    Lecture_Files = models.CharField(max_length=300)
    Sheet = models.CharField(max_length=300)
    Slug = models.SlugField(unique=True, null=True, blank=True)

    def save(self, *args, **kwargs):
        self.Slug = slugify(self.Title, allow_unicode=True)
        super(Lecture, self).save(*args, **kwargs)

    def __str__(self):
        return self.Title

这是我的views.py

from Diploma.models import Lecture, Subject
from django.shortcuts import render

# Create your views here.

def Diploma(request):
    return render(request, 'Diploma/diploma.html', context={
        'sub' : Subject.objects.all(),
    })

def Diploma_Subject(request, slug):
    subject_Lecture = Subject.objects.all()
    return render(request, 'Diploma/subject.html', context={
        'subj' : subject_Lecture,
        'lect' : Lecture.objects.filter(I do not know what I should write here)
    })

标签: djangodjango-modelsdjango-views

解决方案


如果要Lecture根据slug参数过滤模型,则必须执行以下操作:

lecture = Lecture.objects.filter(Slug=slug).first()
if lecture is not None:
    # lecture.Subject, lecture.Title ...

或者,如果您想根据模型中的slug属性进行过滤,Subject您可以执行以下操作:

lectures = Lecture.objects.filter(Subject__Slug=slug)
for lecture in lectures:
    # lecture.Subject, lecture.Title ...
empty:
    print('There are any lectures related')

这里有很多东西要解释,但我试图给你一个最小的可重复的例子,这样你就可以自定义它来实现你的目标。

如果您对理解它有具体疑问,请随时发表评论。


推荐阅读