Django如何动态限制博客文章的类别?

2024-09-30 07:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个博客项目。我想为这些帖子设置一级和二级分类。例如

主要类别:音乐、电影、电脑 以及每个主要类别的次要类别,如: 音乐-舞蹈,摇滚,乡村/ 电影剧本、戏谑、评论/ 计算机-硬件、软件/

当我创建一个新的帖子时,我想根据我选择的主要类别来限制次要类别的选择。 (准确地说,在后期创作形式中, 首先,我希望在下拉菜单中同时显示主要类别和次要类别,然后 其次,在我选择了一个主要类别之后,我只想在次要类别的下拉菜单中显示属于我选择的主要类别的次要类别选项。)

当前my models.py:

class PrimaryCategory(models.Model):
    title = models.CharField('Primary Category', max_length=50)

class SecondaryCategory(models.Model):
    title = models.CharField('Secondary Category', max_length=50)
    primary = models.ForeignKey(PrimaryCategory,on_delete=models.CASCADE)

class Post(models.Model):
    title = models.CharField(max_length=256)
    content = models.TextField()
    create_date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    primary_category = models.ForeignKey(PrimaryCategory, on_delete=models.CASCADE, null=True)
    secondary_category = models.ForeignKey(SecondaryCategory, on_delete=models.CASCADE, null=True)

我搜索了一下,也许可以在我的模型表单中使用ForeignKey.limit\u选项,但我被困在这里了。有谁能帮我写表格吗

目前我只有forms.py,比如:

from django import forms
from myblog.models import Post,PrimaryCategory,SecondaryCategory

class PostForm(forms.ModelForm):

    secondary_category = models.ForeignKey(
        PrimaryCategory,
        on_delete=models.CASCADE,
        limit_choices_to= ??? ,
    )

    class Meta:
        model=Post

总结:

  1. 如何在下拉菜单中显示类别选项而不是自由文本输入

  2. 如何根据表单中的主类别选择动态限制次类别选择

(补充)3.我没有javascript的工作知识,所以如果可能的话,我想不用JS来做。如果不可能动态地更改选择,那么如果我所做的次要类别选择不在所选的主要类别下,那么是否至少可以使窗体给我一个错误消息?我想我会努力的,但任何建议都会大有帮助

如果有任何帮助,我将不胜感激。谢谢你


Tags: truemodeltitleonmodels选项delete类别
1条回答
网友
1楼 · 发布于 2024-09-30 07:29:38

我在google上找到了我想要的东西:

https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html

它需要jQuery,实际上我并没有完全理解解决方案的jQuery部分中发生了什么,但其他方面一切都很清楚,而且工作非常完美

相关问题 更多 >

    热门问题