django - 如何在 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)
})
解决方案
如果要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')
这里有很多东西要解释,但我试图给你一个最小的可重复的例子,这样你就可以自定义它来实现你的目标。
如果您对理解它有具体疑问,请随时发表评论。
推荐阅读
- java - 如何将自定义/默认值设置为来自数据库的值?
- python - 使用python从HTML中的类中打印所有文本
- python - Python - 根据参数值创建文件夹名称
- python - 使用 json 加载和读取 Twitter 状态
- scala - 使用 lambda 函数过滤单个列上的 Spark 数据集
- c - 无法在绑定中设置 UDP 源地址
- python - 如何将序列中的字符串变成浮点数?
- python - py-xgboost 和 sklearn 的 Anaconda 问题
- mysql - 从没有一些记录的两个表中选择
- android - 使用 Kotlin 的类实例中的 java.lang.OutOfMemoryError