Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-对同一型号使用多个外键_Python_Django - Fatal编程技术网

Python Django-对同一型号使用多个外键

Python Django-对同一型号使用多个外键,python,django,Python,Django,我试图对同一模型中的两个字段使用相同的外键,但得到了一个错误 我正在尝试拥有一个主要和次要的待命用户,但不确定在收到下面的错误后如何格式化关系 class ManualRotas(models.Model): rota_name = models.CharField(max_length=200,choices=settings.ONCALL_ROTAS) primary_user = models.ForeignKey(User, unique=True, verbose_na

我试图对同一模型中的两个字段使用相同的外键,但得到了一个错误

我正在尝试拥有一个主要和次要的待命用户,但不确定在收到下面的错误后如何格式化关系

class ManualRotas(models.Model):
    rota_name = models.CharField(max_length=200,choices=settings.ONCALL_ROTAS)
    primary_user = models.ForeignKey(User, unique=True, verbose_name="Primary OnCall Engineer")
    p_start_time = models.DateTimeField(verbose_name="Start Time")
    p_end_time = models.DateTimeField(verbose_name="End Time")
    secondary_user = models.ForeignKey(User, verbose_name="Backup OnCall Engineer", unique=True,blank=True,null=True)
    s_start_time = models.DateTimeField(blank=True,null=True, verbose_name="Start Time")
    s_end_time = models.DateTimeField(blank=True,null=True,verbose_name="Start Time")


ERRORS:
oncall.ManualRotas.primary_user: (fields.E304) Reverse accessor for 'ManualRotas.primary_user' clashes with reverse accessor for 'ManualRotas.secondary_user'.
        HINT: Add or change a related_name argument to the definition for 'ManualRotas.primary_user' or 'ManualRotas.secondary_user'.
oncall.ManualRotas.secondary_user: (fields.E304) Reverse accessor for 'ManualRotas.secondary_user' clashes with reverse accessor for 'ManualRotas.primary_user'.
        HINT: Add or change a related_name argument to the definition for 'ManualRotas.secondary_user' or 'ManualRotas.primary_user'.

WARNINGS:
oncall.ManualRotas.primary_user: (fields.W342) Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.
        HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
oncall.ManualRotas.secondary_user: (fields.W342) Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.
        HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.

System check identified 4 issues (0 silenced).

您必须为两个
ForeignKeys
列定义不同的
相关\u name
。例如:

class ManualRotas(models.Model):
    primary_user = models.ForeignKey(User, related_name='related_primary_manual_roats', unique=True, verbose_name="Primary OnCall Engineer")
    #                            related names ^ v
    secondary_user = models.ForeignKey(User, related_name='related_secondary_manual_roats', verbose_name="Backup OnCall Engineer", unique=True,blank=True,null=True)
    # .... Other columns

另请参阅,其中说明:

用于从相关对象返回到此对象的关系的名称。它也是
相关查询\u name
的默认值(用于目标模型的反向过滤器名称的名称)。有关完整的解释和示例,请参阅相关对象文档。请注意,在抽象模型上定义关系时必须设置此值;当你这样做的时候,一些特殊的语法是可用的


相关职位:


提示:在“ManualRotas.secondary\u user”或“ManualRotas.primary\u user”的定义中添加或更改相关的\u name参数。您是否阅读了收到的错误?你试过研究它说什么吗?你试过按照提示做吗?可能是重复的