Python Foreignkey问题,密钥(状态\u id)=(1)已存在
我正在使用Django/Rest框架进行一个小项目(看板板),我有两个模型 状态(列)和任务模型 任务只能在一列中,因为我们将任务从一列拖到另一列,这意味着任务只能在一列中 我通过创建外键建立了一个OneToMany关系,但我不确定这是否是正确的选择,因为我在尝试添加新任务时出错 我得到的错误是:Python Foreignkey问题,密钥(状态\u id)=(1)已存在,python,django,Python,Django,我正在使用Django/Rest框架进行一个小项目(看板板),我有两个模型 状态(列)和任务模型 任务只能在一列中,因为我们将任务从一列拖到另一列,这意味着任务只能在一列中 我通过创建外键建立了一个OneToMany关系,但我不确定这是否是正确的选择,因为我在尝试添加新任务时出错 我得到的错误是: duplicate key value violates unique constraint "task_task_status_id_de4e8cac_uniq" DETAIL:
duplicate key value violates unique constraint "task_task_status_id_de4e8cac_uniq"
DETAIL: Key (status_id)=(1) already exists.
我必须在这两个模型之间建立什么样的关系
这是我的模型:
class Task(models.Model):
status = models.ForeignKey(Status, related_name="tasks", on_delete=models.CASCADE)
title = models.CharField(max_length=60, blank=False, null=False)
class Status(models.Model):
title = models.CharField(blank=False, null=False, max_length=255)
slug = models.CharField(blank=False, null=False, max_length=255)
order = models.SmallIntegerField(default=0)
def __str__(self):
return self.title
视图:
def create(self, request):
formSerializer = self.serializer_class(data = request.data, many= True)
if formSerializer.is_valid():
formSerializer.save()
listSerializer = self.serializer_class(self.queryset, many = True)
return Response(listSerializer.data, status = status.HTTP_201_CREATED)
return Response(formSerializer.errors, status.HTTP_400_BAD_REQUEST)
从你发布的错误中 重复的键值违反唯一约束“任务\任务\状态\ id \开发4E8CAC\ uniq” 您在
状态\u id
上有一个唯一的约束,请检查数据库。(因为您的模型中没有unique=True
)
任务模型很简单,所以您可以在db shell中进行“任务添加”测试。检查是否显示错误
如果没有,恭喜你
如果是,那么检查request.data的有效性问题真的很疯狂,是来自PostgreSQl,因为我在手动执行insert,这就是问题所在
因此,我构建了我的表,并开始从视图中插入数据,而不涉及我的SQL(我正在从postgres admin执行查询)显示创建或更新任务实例的代码。看起来您正在尝试使用现有id创建新任务,而不是更新现有id。是的,我想在@gdef_处创建新任务添加创建任务的代码task@gdef_同样的问题我该怎么办你需要我展示什么?