首页 > 解决方案 > 创建内联表单集 - 外键问题

问题描述

我有以下 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'.

标签: pythondjangoinline-formset

解决方案


您已颠倒模型顺序

inlineformset_factory(parent_model, model, ... )

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

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

推荐阅读