Ограничение FOREIGN KEY не работает Django Models

Я создаю небольшое приложение на django, используя AllAuth для аутентификации, который я настроил самостоятельно, чтобы включить некоторые дополнительные поля.

Часть функциональности сайта требует, чтобы я многократно ссылался на вошедшего пользователя через внешний ключ, и я делаю это с помощью созданной мной пользовательской модели UserProfile; (я пробовал использовать модель Django User & это также дало мне ошибки)

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    phone_number = models.CharField(max_length=30, null=False)
    postcode = models.CharField(max_length=500, null=True, blank=True)
    town_or_city = models.CharField(max_length=40, null=True, blank=True)
    street_address1 = models.CharField(max_length=80, null=True, blank=True)
    street_address2 = models.CharField(max_length=80, null=True, blank=True)
    county = models.CharField(max_length=80, null=True)

Я ссылаюсь на вышеуказанную модель в таблице активности:

class Activity(models.Model):
    class Meta:
        verbose_name_plural = 'Activities'

    activity_id = models.CharField(max_length=32, null=False, editable=False)
    host = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    name = models.CharField(max_length=254, null=False, blank=False)
    date = models.DateField()
    start_time =models.TimeField()
    end_time = models.TimeField()
    duration = models.DurationField(blank=True, null=True)
    location = models.CharField(max_length=40, null=False, blank=False)
    description = models.CharField(max_length=140, null=False, blank=False)
    available = models.BooleanField(default=True)

Все работает гладко, поскольку я могу использовать это для создания одной активности для каждого пользователя, однако я хочу сделать это поле "многие к одному", что потребовало от меня обновления из settings.AUTH_USER_MODEL в Foreign Key.

К сожалению, я получаю следующую ошибку:

FOREIGN KEY constraint failed

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

Если кто-то может указать мне правильное направление, как создать эту функциональность "многие к одному", это было бы здорово.

Я не могу видеть весь ваш код, поэтому ответ может быть неправильным, но похоже, что у вас нет Primary Key в UserProfile

ForeignKey По умолчанию принимает первичный ключ в качестве аргумента

Потенциальное решение:

class Activity(models.Model):    
    host = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile', primary_key=True)

Если это не решит вашу проблему, пожалуйста, поместите полное сообщение об ошибке

DOCS

На основании предоставленной вами информации я могу предположить, что произошло то, что у вас потенциально есть пользователь, у которого нет профиля пользователя, поэтому, когда вы пытаетесь создать активность, она терпит неудачу с указанной вами ошибкой. С другой стороны, это может быть связано с тем, как вы отображаете и проверяете свои формы. Кроме того, это может быть связано с тем, как вы используете представления на основе классов или представления на основе функций.

В любом случае, пожалуйста, предоставьте всю возможную информацию. Как правило, требуется вся информация, а не только та часть, в которой вы не уверены.

Как создать деятельность?

Как вы проверяете свои формы?

Как заполняется идентификатор профиля пользователя?

Предоставив больше информации, я с радостью отвечу, так как это кажется прямым вопросом

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