首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django:在管理中智能选择ChainedForeignKey / chained下拉菜单

django:在管理中智能选择ChainedForeignKey / chained下拉菜单
EN

Stack Overflow用户
提问于 2021-11-12 12:23:14
回答 1查看 115关注 0票数 0

Hej!:)

我有5个模型,它们是相互层级连接的。节->分区->组->类-> wz

一个部门可以有多个部门,但一个部门只能有一个部门(依此类推)。因此,我设置了ForeignKeys:

代码语言:javascript
复制
# models.py
class NaceSection(models.Model):
    code = models.CharField(max_length=1, unique=True)
    description_english = models.CharField(max_length=500)


class NaceDivision(models.Model):
    code = models.CharField(max_length=2, unique=True)
    nace_section = models.ForeignKey(NaceSection, on_delete=models.CASCADE, related_name="nace_section")
    description_english = models.CharField(max_length=500)


class NaceGroup(models.Model):
    nace_division = models.ForeignKey(NaceDivision, on_delete=models.CASCADE, related_name="nace_division")
    code = models.CharField(max_length=4, unique=True)
    description_english = models.CharField(max_length=500)

然后我有一个模型,其中所有这些都是集成为下拉选项的M2M字段。我的目标是只得到部门,这是在已经选定的部分在管理区。(以此类推)

我尝试过智能选择ChainedForeignKey:

代码语言:javascript
复制
# models.py

class Institution(models.Model):
    nace_sections = models.ManyToManyField(
        NaceSection,
        related_name="nace_sections"
    )
    nace_divisions = ChainedForeignKey(
        NaceDivision,
        chained_field="nace_sections",
        chained_model_field='nace_sections',
        blank=True,
    )
     nace_group = ChainedForeignKey(
        NaceGroup,
        chained_field="nace_divisions",
        chained_model_field='nace_divisions',
        blank=True,
    )

管理区域中的组织和下拉列表根本不会改变,我的视图和我所有结果的表格告诉我('42S22', "[42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'nace_divisions_id'. (207) (SQLExecDirectW)")

有了ChainedManyToManyField,什么都不会发生。有人知道哪里出问题了吗?感谢您的帮助!:)

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 16:44:28

在代码中将nace_sections指定为models.ManyToManyField

1.从ManyToManyField更改为ForeignKey。

2.重命名chained_model_field值

-->nace_sections to nace_section

-->nace_divisions to nace_division

代码语言:javascript
复制
class Institution(models.Model):
nace_sections = models.ForeignKey(
    NaceSection,
    related_name="nace_sections"
    , on_delete=models.CASCADE
)
nace_divisions = ChainedForeignKey(
    NaceDivision,
    chained_field="nace_sections",
    chained_model_field='nace_section',
    blank=True,
)
nace_group = ChainedForeignKey(
    NaceGroup,
    chained_field="nace_divisions",
    chained_model_field='nace_division',
    blank=True,
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69942903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档