Вы описываете отношение , а не a ForeignKey
, что означает, что UserProfile
имеет (максимум) один связанный Region
, но ManyToManyField
[Django-doc] .
A ManyToManyField
, таким образом, означает, что область может быть связана с нулем, одним или несколькими UserProfile
s и a UserProfile
может относиться к нулю, одному или нескольким Region
с.
Таким образом, вы можете изменить модели на:
class Region(models.Model):
name = models.CharField(max_length=30)
created_at = models.DateTimeField(auto_now=True)
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
<b>regions</b> = models.<b>ManyToManyField(Region)</b>
В реляционной базе данных это реализуется путем добавлениядополнительный (скрытый) стол с ForeignKey
с до Region
с и UserProfile
с.Но Django ORM работает "прозрачно" и, таким образом, скрывает детали реализации.
См. Документацию для получения дополнительной информации о том, как "заполнить" такое отношение.