django - 如何在 1 个帖子中选择具有多个子类别的多个父类别?
问题描述
我正在通过 Django 框架创建一个博客。
在博客中,我有一个帖子功能,我可以在管理页面的帖子中分配多个父母类别。
但是,我正在努力创建一个模型,该模型可以在管理页面的多个父类别下分配多个子类别。
例如,我有 2 个父母类别(汤姆和迈克)。
我在这些父母类别下有不同的子类别。
汤姆(父母类别)
|- 这很好(发布 A)(子类别)
|- 这不好(发布 B)(子类别)
迈克(父母类别)
|- 这很酷(发布 A)(子类别)
|- This is not cool (to Post B)( Subcategory )
当用户选择 Parents 类别时,例如 Tom,用户可以看到每个 Post A 和 B 的子类别评论。
例如
Localhost:8000/TOM
显示帖子和评论相关的类别TOM
帖子 A - 这很酷
帖子 B - 这不酷
下面是我为帖子和父母类别创建的模型。
谁能告诉我如何创建我想要的子类别模型?
如果我的问题对您来说难以理解,请提前道歉。
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=20)
description = models.TextField(default="")
def __str__(self):
return self.name
class Post(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
categories = models.ManyToManyField("Category", related_name="posts")
url = models.CharField(max_length=200, unique=True, default='')
image = models.ImageField(upload_to='images/', null=True)
def __str__(self):
return self.title
解决方案
尝试像这样设计你的模型:
class Category(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField()
parent = models.ForeignKey('self',blank=True, null=True ,related_name='children')
class Meta:
unique_together = ('slug', 'parent',) #enforcing that there can not be two categories under a parent with same slug
verbose_name_plural = "categories"
在此处查看实施类别和子类别的详细信息
参考和学分:https ://djangopy.org/how-to/how-to-implement-categories-in-django/
推荐阅读
- reactjs - 生产中的 ReactJS API 主机
- image-processing - 校正曝光和白平衡
- php - 基于N查找最重复列表的算法
- mysql - (Mysql) 如何创建一列是将两列相乘
- python - 500 内部服务器错误烧瓶
- python - 在 Keras 模型中实现 GloVe 嵌入层
- ruby-on-rails - 在对某些参数添加限制后,Rails Pundit 无法仅在 Create action 上找到 nil 策略
- python - 熊猫数据帧传播功能还是类似的?
- python - 只需在python中写入一次对象名称即可调用对象的所有属性
- image-processing - 测量两点之间的距离