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

问题描述

我有以下两个要在表单集中使用的模型。我不确定我错了

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,null=True)
    idtrn_trp = models.ForeignKey('AppTransmissionTrn',models.DO_nothing,db_column='idtrn_trp',null=True)




class AppCustomerTpRel(models.Model):
    id_rel = models.AutoField(primary_key=True)
    idcst_rel = models.ForeignKey(AppCustomerCst,db_column='idcst_rel')
    idtrp_rel = models.ForeignKey(AppTradingPartnerTrp,db_column='id_trp')
    cust_vendor_rel = models.CharField(max_length=50,null=True)
    sender_id_rel = models.CharField(max_length=50,null=True)
    old_vendor_rel = models.CharField(max_length=50,null=True)
    vendor_name_rel = models.CharField(max_length=50,null=True)
    category_rel = models.CharField(max_length=50,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。