ForeignKey(unique=True) обычно лучше обслуживается OneToOneField
class Categories(models.Model):
id = models.ForeignKey('auth.User',primary_key=True)
name = models.CharField(max_length=100)
description = models.CharField(max_length=300)
def __str__(self):
return Categories.name
class Meta:
order_with_respect_to = 'id'
class Specializations(models.Model):
id = models.ForeignKey('auth.User',primary_key=True)
name = models.CharField(max_length=100)
description = models.CharField(max_length=300)
categories = models.ForeignKey(Categories, on_delete=models.CASCADE)
def __str__(self):
return Specializations.name
courses.Categories.id: (fields.W342) Установка уникального =True для ForeignKey имеет тот же эффект, что и использование OneTo OneField.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Courses.id: (fields.W342) Установка уникального =True для ForeignKey имеет тот же эффект, что и использование поля OneToOne.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Specializations.id: (fields.W342) Установка уникального =True для ForeignKey имеет тот же эффект, что и использование OneToOneField.
Это предупреждение или ошибка возникает, хотя отношение один ко многим!! не один в один
1 ответ
То, как вы разработали свои модели, это по сути OneToOne
отношения, потому что вы установили ForeignKey
быть primary_key
(это автоматически применяется unique=True
).
Вы действительно хотите, чтобы пользователь был primary_key
из Categories
или же Specializations
?
Я думаю, что вы хотите что-то вроде этого:
class Categories(models.Model):
user = models.ForeignKey('auth.User')
name = models.CharField(max_length=100)
description = models.CharField(max_length=300)
def __str__(self):
return self.name
class Specializations(models.Model):
user = models.ForeignKey('auth.User')
name = models.CharField(max_length=100)
description = models.CharField(max_length=300)
categories = models.ForeignKey(Categories, on_delete=models.CASCADE)
def __str__(self):
return self.name
С этим User
может иметь много Categories
а также Specializations
Я также изменил __str__
метод для self.name