如何过滤 Django Admin 中的外键选择?

How to filter foreingkey choices in Django Admin?

我有 3 个简单模型:

class Department(models.Model):
name = models.CharField(
    max_length=30
)


class Company(models.Model):
    name = models.CharField(
        max_length=30
    )
    department = models.ManyToManyField(Department)


class Employee(models.Model):
    name = models.CharField(
        max_length=30
    )

    company = models.ForeignKey(Company,
                                on_delete=SET_NULL,
                                null=True,
                                blank=True,
                                )

    department = models.ForeignKey(to=Department,
                                   on_delete=DO_NOTHING)

我想将 Django 管理面板中的部门选项限制为与员工公司相关的选项。例如:

部门:

HR、DevOpps、WebApps、TVApps

公司:

Company_1 与部门 - 人力资源、DevOpps、WebApp

Company_2 与部门 - 人力资源、DevOpps、TVApps

添加员工:

如果选择 Company_1,部门的选项为:HR、DevOpps、WebApp

如果选择 Company_2,部门的选项为:HR、DevOpps、TVApps

听起来您想要在表单中实现依赖下拉菜单?

Here 是我过去关注的一篇很棒的文章,您可以通过使用 ajax.

过滤选项来解决这个问题

我还看到 htmx 很好地解决了这个问题,如果您想尝试一下的话。他们的示例页面显示了正在实施的 value-select