Django 多字段关联一个表为外键的解决办法

在django中,当多个字段对应同一个外键时,会报错,如:

class Storehouse_list(models.Model):#库位列表
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=32)#仓库名称

class Storehouse_change(models.Model):#调库单
    nid = models.AutoField(primary_key=True)
    matter = models.ForeignKey(to='Matter_list',to_field='nid',on_delete=models.CASCADE)#物料名称
    number = models.IntegerField#数量
    storehouse_in = models.ForeignKey(verbose_name='出仓仓库',to='Storehouse_list',to_field='nid',on_delete=models.CASCADE)#物料所调入的仓库
    storehouse_out = models.ForeignKey(verbose_name='入仓仓库',to='Storehouse_list',to_field='nid',on_delete=models.CASCADE)#物料调出的仓库
    create_date = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)
    create_user = models.ForeignKey(to="UserInfo",to_field="nid",on_delete=models.CASCADE)#操作员

其中:storehouse_in 和 storehouse_out 同时外键关联库位列表,会报错,这种外键关联很常见,下面给出解决办法。

解决办法:给 models.ForeignKey() 加入 related_name 参数,定义不同的关联名称,如修改上面代码中的 storehouse_in 和 storehouse_out 即可解决问题:

storehouse_in = models.ForeignKey(verbose_name='出仓仓库',to='Storehouse_list',to_field='nid',related_name="出仓仓库",on_delete=models.CASCADE)#物料所调入的仓库
storehouse_out = models.ForeignKey(verbose_name='入仓仓库',to='Storehouse_list',to_field='nid',related_name="入仓仓库",on_delete=models.CASCADE)#物料调出的仓库
1
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!