我有两个模特.ProceduresProcedureCategories.现在,每个Procedure都可以有一个ProcedureCategory的外键.

我想做两件事:为我的用户组获取所有特定类型的Procedures个.并获取这Procedures项中使用的所有类别.

以下是我的模特:

class ProcedureCategories(models.Model):
    name = models.CharField(
        max_length=200,
        help_text="Enter category name."
    )

    def __str__(self):
        return self.name

    def __lt__(self, other):
        return self.name < other.name

class Procedure(models.Model):
    """Model representing a task (but not a specific copy of a procedure)."""
    title = models.CharField(max_length=200)
    type = models.ManyToManyField(ProcedureTypes, help_text="Select a type for this procedure")
    summary = RichTextField(max_length=1000, help_text="Enter a brief description of the task", blank=True)
    groups = models.ManyToManyField(Group, help_text="Select which groups should be assigned for the task", blank=True)
    category = models.ForeignKey(ProcedureCategories, on_delete=models.PROTECT, help_text="Select which category should be assigned for the task", blank=True, null=True)
    date_done = models.DateTimeField(null=True, blank=True)

    def __str__(self):
        """String for representing the Model object."""
        return self.title

第一件事很简单:

procedureModels = Procedure.objects.filter(type=2, groups__user=request.user)

这为我提供了类型2的全部Procedures个正确的用户组.

但我如何才能得到这Procedures个项目中使用的所有ProcedureCategorires个项目呢?

ProcedureCategories.filter()?

我可能需要以某种方式加入其中.在Django 怎么才能做到这一点?

推荐答案

您可以反向筛选前ForeignKey位:

categories = ProcedureCategories.objects.filter(
    procedure__type=2, procedure__groups__user=request.user
)

通常情况下,Django 模特的名字是singular,所以是ProcedureCategory,而不是ProcedureCategories.

Django相关问答推荐

当RST =True时RST CSS

为什么Docker compose没有这样的文件或目录?

Django没有';t显示黄页

如何在Django CMS中更新上下文

Django多对多关系报错:<title> object (None)>需要先设置id字段的值.

如何将多个模型添加到单个列表视图?

防止 django 将_id附加到外键字段

Django REST Framework如何在序列化程序中引发验证错误时指定错误代码

Django:无法从另一个应用程序导入模型

模板过滤器修剪任何前导leading或尾随trailing空格

如何从 json 模式创建表单?

Django中的左外反向select_related?

我的 django 模型 DateField 如何将 30 天添加到提供的值?

可以在 Django 抽象模型中使用多重继承吗?

从 virtualenv 中,pip freeze > requirements.txt 给出了一堆垃圾!如何修剪它?

如何查询名称包含python列表中任何单词的模型?

get_or_create() 是否必须立即保存?

Django:以 10 为底的 int() 的无效文字

登录后django重定向不起作用next不发布?

Django Rest 框架 ImageField