python - 创建内联表单集 - 外键问题
问题描述
我有以下 2 个要在表单集中使用的模型。我不确定我做错了什么
models.py
class AppTradingPartnerTrp(models.Model):
id_trp = models.AutoField(primary_key=True)
tpid_trp = models.CharField(max_length=50, blank=True, null=True)
name_trp = models.CharField(max_length=50)
description_trp = models.CharField(max_length=100, blank=True, null=True)
idtrn_trp = models.ForeignKey('AppTransmissionTrn', models.DO_NOTHING, db_column='idtrn_trp', blank=True, null=True)
class AppCustomerTpRel(models.Model):
id_rel = models.AutoField(primary_key=True)
idcst_rel = models.ForeignKey(AppCustomerCst, models.DO_NOTHING, db_column='idcst_rel')
idtrp_rel = models.ForeignKey(AppTradingPartnerTrp, models.DO_NOTHING, db_column='id_trp')
cust_vendor_rel = models.CharField(max_length=50, blank=True, null=True)
sender_id_rel = models.CharField(max_length=50, blank=True, null=True)
old_vendor_rel = models.CharField(max_length=50, blank=True, null=True)
vendor_name_rel = models.CharField(max_length=50, blank=True, null=True)
category_rel = models.CharField(max_length=50, blank=True, null=True)
这是我试图创建表单集的地方:
forms.py
CstVendorNoFormSet = inlineformset_factory(AppCustomerTpRel, AppTradingPartnerTrp, exclude=())
但是,当我执行 runserver 时,我得到:
ValueError: 'AppTradingPartnerTrp' has no ForeignKey to 'AppCustomerTpRel'.
解决方案
您已颠倒模型顺序
inlineformset_factory(parent_model, model, ... )
父模型是AppTradingPartnerTrp
因为它有多个AppCustomerTpRel
(外键)所以
CstVendorNoFormSet = inlineformset_factory(AppTradingPartnerTrp, AppCustomerTpRel, exclude=())
推荐阅读
- haskell - 这个函数会被懒惰地评估吗?
- javascript - 使用 try finally in for await 是一个不错的选择吗?
- java - 确定一个函数是否“可以覆盖”另一个函数
- javascript - 类和数组作为参数
- python - 如何打印列表中所有元素的第一个字母?
- javascript - 突出显示活跃的“药丸”
- c# - 使用 C# 更新 JSON 文件中存在的特定项目
- c - 试图让 UART 在 dsPIC33EV256GM102 上工作
- c# - 在服务器上处理的小型 API 调用与存储在内存中的大型数据拉取
- pytorch - PyTorch 错误张量 a (128) 的大小必须与非单维 0 处的张量 b (9) 的大小相匹配