如何在django中显示选定类别的特定子类别
最近我在写博客。其中一篇文章有类别和子类别。 这是我的模特如何在django中显示选定类别的特定子类别,django,python-3.x,Django,Python 3.x,最近我在写博客。其中一篇文章有类别和子类别。 这是我的模特 from django.db import models from django.contrib.auth.models import User from django.utils import timezone from ckeditor_uploader.fields import RichTextUploadingField class Category(models.Model): title = models.Cha
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from ckeditor_uploader.fields import RichTextUploadingField
class Category(models.Model):
title = models.CharField(max_length=50, unique=True)
def __str__(self):
return f"{self.title}"
class SubCategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
title = models.CharField(max_length=50, unique=True)
def __str__(self):
return f"{self.title}"
class Author(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
phone_no = models.CharField(max_length=14)
details = models.TextField(null=True,blank=True)
def __str__(self):
return f"{self.name}"
class Post(models.Model):
author = models.ForeignKey(Author, default=1,blank=True,
null=True, on_delete=models.SET_DEFAULT)
category = models.ForeignKey(Category,on_delete=models.CASCADE,
null=True)
sub_category = models.ForeignKey(SubCategory,
on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=250)
featured_image = models.ImageField(
upload_to="post_featured_image",null=False )
content = RichTextUploadingField()
podcast = models.FileField(upload_to="post_podcast",
blank=True,null=True)
uploaded_on = models.DateTimeField(default=timezone.now)
viewed = models.IntegerField(default=0,editable=False)
def __str__(self):
return f"{self.title}"
现在我可以从Django管理面板中选择文章的类别和子类别。但问题是我可以选择一个类别和任何子类别,即使子类别不是所选类别的子类别。因此,一篇文章有一个类别和一个子类别。但子类别的父类别与帖子的类别不同。所以我想我只能选择那些子类别,这些子类别是我为帖子选择的选定类别的子类别。下一个字段必须依赖于上一个字段。怎么做?
对不起,我的英语不好。谢谢。如果要在一个页面上执行此操作,必须使用Javascript。虽然我认为您可以将类别和子类别合并为一个
输入。但那将是笨拙的。也许管理员不是最好的地方来做这件事,它会更容易的形式,你建立自己。谢谢。但是,有没有办法编辑管理面板或在管理面板页面中添加自己的javascript?有,您可以将管理模板放入templates/admin/my_app/
中,并将其命名为您要替换的模板。请参阅文件: