ForeignKey(unique=True) 通常由 OneToOneField 提供更好的服务
ForeignKey(unique=True) is usually better served by a 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) 在 ForeignKey 上设置 unique=True 与使用 OneTo 具有相同的效果
OneField.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Courses.id: (fields.W342) 在 ForeignKey 上设置 unique=True 与使用 OneToOne 具有相同的效果
字段.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Specializations.id: (fields.W342) 在 ForeignKey 上设置 unique=True 与使用
OneToOneField.
尽管关系是一对多,但仍会出现此警告或错误!!不是一对一
您设计模型的方式本质上是一种 OneToOne
关系,因为您将 ForeignKey
设置为 primary_key
(这会自动应用 unique=True
)。
您真的希望用户成为 Categories
或 Specializations
的 primary_key
吗?
我想你想要这样的东西:
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
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) 在 ForeignKey 上设置 unique=True 与使用 OneTo 具有相同的效果 OneField.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Courses.id: (fields.W342) 在 ForeignKey 上设置 unique=True 与使用 OneToOne 具有相同的效果 字段.
HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
courses.Specializations.id: (fields.W342) 在 ForeignKey 上设置 unique=True 与使用 OneToOneField.
尽管关系是一对多,但仍会出现此警告或错误!!不是一对一
您设计模型的方式本质上是一种 OneToOne
关系,因为您将 ForeignKey
设置为 primary_key
(这会自动应用 unique=True
)。
您真的希望用户成为 Categories
或 Specializations
的 primary_key
吗?
我想你想要这样的东西:
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