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)#物料调出的仓库

版权声明:
作者:softwolf
链接:http://366tian.org/?p=1725
来源:中天在线 366tian.org
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>