首页 > 解决方案 > Django:问题声明具有相同相关对象的2个字段

问题描述

我正在尝试创建一个模型,该模型具有 2 个具有相同相关对象(Call)的字段:

class Call(LogsMixin, models.Model):
    """Definición del modelo de Proveedor."""

    id = models.CharField("ID de la convocatoria", primary_key=True, null=False, default="", max_length=50)
    name = models.CharField("Nombre de convocatoria", null=False, default="", max_length=200)
    active = models.BooleanField("Activada", default=True)


class Consumption(LogsMixin, models.Model):
    """Definición del modelo de Consumos"""

    client = models.ForeignKey('authentication.Client', verbose_name=("Cliente"), null=True, default=None, on_delete=models.SET_DEFAULT)
    sap_price = models.DecimalField(("Precio de SAP"), max_digits=6, decimal_places=2, null=False, default=0)
    access_date = models.DateField("Fecha de acceso", auto_now=False, auto_now_add=False)
    call = models.ForeignKey(Call, verbose_name=("Convocatoria"), null=True, default=None, on_delete=models.SET_DEFAULT)
    accessible_calls = models.ManyToManyField(Call, verbose_name=("Convocatorias accesibles"))

当我尝试进行迁移时,我收到下一个错误:

错误:consumption.Consumption.accessible_calls:(fields.E304)“Consumption.accessible_calls”的反向访问器与“Consumption.call”的反向访问器冲突。提示:在“Consumption.accessible_calls”或“Consumption.call”的定义中添加或更改一个related_name 参数。consumption.Consumption.call:(fields.E304)“Consumption.call”的反向访问器与“Consumption.accessible_calls”的反向访问器发生冲突。提示:在“Consumption.call”或“Consumption.accessible_calls”的定义中添加或更改related_name 参数。

是的,我阅读了提示,但这不是我需要的

我需要这个,因为我需要客户选择的呼叫以及他可以选择的呼叫

有没有人有任何线索?

标签: djangodjango-models

解决方案


您有两个具有相同反向相关名称的字段 ,它们由 Django 自动构造call_set

您应该将其中一个更改为唯一值

accessible_calls = models.ManyToManyField(Call, verbose_name=("Convocatorias accesibles", related_name="my_related_name"))

推荐阅读