【发布时间】:2021-12-24 19:13:33
【问题描述】:
嘿嘿! :)
我有 5 个模型彼此分层连接。 Section -> Division -> Group -> Class -> wz
一个分区可以有多个分区,但一个分区只能有一个分区(以此类推)。因此我设置了 ForeignKeys:
# 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:
# 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 什么都不会发生。有人知道出了什么问题吗? 任何帮助表示赞赏! :)
【问题讨论】:
-
你的错误不在于使用
nace_divisions作为chained_field 而不是nace_division -
没有。如果我将其更改为 nace_section 和 nace_division,下拉菜单会显示管理员中的所有选项,并在保存错误
('42S22', "[42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'nace_divisions_id'. (207) (SQLExecDirectW); [42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")时出现。
标签: django django-models django-admin m2m django-smart-selects