创建内联表单集 - 外键问题

Creating an Inline Formset - Foreign Key Issue

我想在表单集中使用以下 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=())

然而,当我运行服务器时,我得到:

ValueError: 'AppTradingPartnerTrp' has no ForeignKey to 'AppCustomerTpRel'.

您颠倒了模型顺序

inlineformset_factory(parent_model, model, ... )

父模型是 AppTradingPartnerTrp 因为它有多个 AppCustomerTpRel (外键)所以

CstVendorNoFormSet = inlineformset_factory(AppTradingPartnerTrp, AppCustomerTpRel, exclude=())

看起来你的 ForeignKey 关系搞错了。

旁注:我注意到在您的 'AppTradingPartnerTrp' 模型中,对于 idtrn_trp FK 字段,您有 'AppTransmissionTrn' 作为字符串,我认为它应该是没有 AppTransmissionTrn撇号。