Как иметь несколько отношений "один к одному" к определенной модели

У меня есть научная информационная модель, которая имеет связь один-к-одному с моей моделью пользователя. вот моя модель:

class ScientificInfo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    **other fields**

Я хочу добавить к нему поле интервьюера, чтобы я мог выбрать интервьюера из модели пользователя, поэтому я добавил его следующим образом:

class ScientificInfo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user')
    interviewer = models.OneToOneField(User, on_delete=models.CASCADE, related_name='interviews')
    **other fields**

но когда я хочу создать нового пользователя, он выдает ошибку unique constraint failed

Вы не должны использовать OneToOneField, потому что вы используете два отношения с одной таблицей. Лучше использовать ForeignKey.

class ScientificInfo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='users')
    interviewer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='interviews')
    **other fields**

Надеюсь, это может помочь.

Вернуться на верх