【发布时间】:2021-12-23 10:29:43
【问题描述】:
我有这两个模型
class TaskModel(models.Model):
user=models.ForeignKey(User,on_delete=models.CASCADE,primary_key=True)
name=models.CharField(max_length=100)
start=models.DateField()
end=models.DateField()
note=models.CharField(max_length=300)
class ProfileModel(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE,
primary_key=True)
img=models.ImageField(upload_to='profileimg',blank=True)
desc=models.TextField(max_length=500)
occupation=models.CharField(max_length=100)
martial=models.CharField(max_length=50)
但是当我运行makemigrations 命令时,它会显示这个错误::
app.TaskModel.users: (fields.W342) 在 ForeignKey 上设置 unique=True 与使用 OneToOneField 的效果相同。
提示:ForeignKey(unique=True) 通常由 OneToOneField 提供更好的服务。
这是我的问题,我将TaskModel 设置为ForeignKey,但它的工作方式类似于OneToOne 字段。
【问题讨论】:
-
这不是错误,而是警告。
ForeignKeys 是独一无二的,基本上就是OneToOneField。primary_key=True暗示unique=True。
标签: python django django-models django-database