同一表中有同一外表,会冲突,报错:
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,避免冲突