DIJANGO NINJA modles 中同一外表多个字段冲突解决

同一表中有同一外表,会冲突,报错: 

class ServiceOrder(CoreModel):

# 其他字段...

dispatch = models.ForeignKey(Users, verbose_name='工单派发', on_delete=models.CASCADE,)

注意:creator是CoreMode继承过来的: 

creator = models.ForeignKey(Users, verbose_name='创建者', on_delete=models.CASCADE)

执行  python manage.py makemigrations

报错: 
SystemCheckError: System check identified some issues:

ERRORS:
service_order.ServiceOrder.creator: (fields.E304) Reverse accessor for 'service_order.ServiceOrder.creator' clashes with reverse accessor for 'service_order.ServiceOrder.dispatch'.
        HINT: Add or change a related_name argument to the definition for 'service_order.ServiceOrder.creator' or 'service_order.ServiceOrder.dispatch'.
有冲突

错误提示表明 creator 和 dispatch 这两个字段的反向访问器名称冲突了

解决方案: 

需要为 creator 或者 dispatch 中的至少一个字段添加不同的 related_name 参数来解决冲突。

例如,如果您希望将 dispatch 的 related_name 修改为 orders_by_dispatch ,可以这样修改代码

dispatch = models.ForeignKey(Users, verbose_name='工单派发', on_delete=models.CASCADE, related_name='dispatched_orders')

比如这个来自同一外表: 

machine_sn = models.ForeignKey(MachineBank, on_delete=models.CASCADE, verbose_name='机器编号',
                                   related_name='service_orders_by_sn')
    machine_type = models.ForeignKey(MachineBank, on_delete=models.CASCADE, verbose_name='机器型号',
                                     related_name='service_orders_by_type')
    customer_name = models.ForeignKey(MachineBank, on_delete=models.CASCADE, verbose_name='客户名称',
                                      related_name='customer_name')

需要添加related_name,避免冲突

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值