首页 > 解决方案 > Django模型如何做多对一映射?

问题描述

我正在尝试将多个字段映射到供应商和菜单类中的同一字段。如果我使用如下所示的外键进行映射,它可以工作。但这不是我想要的。

class OrderItem_Mon(models.Model):

    vendor_name = models.ForeignKey(Vendor, on_delete=models.SET_NULL, null=True)
    menu_name = models.ForeignKey(Menu, on_delete=models.SET_NULL, null=True)
    date_created = models.DateTimeField('date created', auto_now_add=True)
    note = models.CharField('note', max_length=255, null=True, blank=True)

我需要像这样将多个字段映射到特定表的同一字段。

class OrderItem_Mon(models.Model):

    vendor_name_1 = models.ForeignKey(Vendor, db_column='vendor_name', on_delete=models.SET_NULL, null=True)
    menu_name_1 = models.ForeignKey(Menu, db_column='menu_name',on_delete=models.SET_NULL, null=True)
    vendor_name_2 = models.ForeignKey(Vendor, db_column='vendor_name',on_delete=models.SET_NULL, null=True)
    menu_name_2 = models.ForeignKey(Menu, db_column='menu_name', on_delete=models.SET_NULL, null=True)
    date_created = models.DateTimeField('date created', auto_now_add=True)
    note = models.CharField('note', max_length=255, null=True, blank=True)

但是,它不起作用。我该如何进行这项工作?基本上,我需要制作具有从供应商和菜单模型到每个字段的价值的保管箱的新表单。帮助

标签: pythondjango

解决方案


您需要为外键模型字段添加related_name 属性并给出不同的名称。

该错误是由于同一模型用作多个字段的外键。因此,它在迁移过程中产生了问题。只是设置不同的 .related_name 不会有任何问题。


推荐阅读