Python 更新记录时出现Django IntegrityError

Python 更新记录时出现Django IntegrityError,python,django,python-3.x,django-models,Python,Django,Python 3.x,Django Models,我有一个主键为双列的模型。我对它做了一个过滤,得到我想要的记录,更改一个字段并保存它。据我所知,save将更新记录,并且不会在db中创建模型的新实例。所以应该没问题,但是当我试图保存记录时,我遇到了一个integrityError重复条目'10-2'作为键'PRIMARY' 以下是代码片段: analysis = AnalysisResult.objects.filter(request=req.request_id) for anal in analysis: anal.analysi

我有一个主键为双列的模型。我对它做了一个过滤,得到我想要的记录,更改一个字段并保存它。据我所知,save将更新记录,并且不会在db中创建模型的新实例。所以应该没问题,但是当我试图保存记录时,我遇到了一个integrityError
重复条目'10-2'作为键'PRIMARY'

以下是代码片段:

analysis = AnalysisResult.objects.filter(request=req.request_id)
for anal in analysis:
    anal.analysisresult_path = some_string
    anal.save() #this line is where the error occurs
这是我的模型:

class AnalysisResult(models.Model):

    analysisresult_path = models.CharField(db_column='analysisResult_path', max_length=255, blank=True,
                                       null=True)  # Field name made lowercase.
    detectionresult_path = models.CharField(db_column='detectionResult_path', max_length=255, blank=True,
                                        null=True)  # Field name made lowercase.
    targetcode = models.ForeignKey('TagetCode', models.DO_NOTHING,
                               db_column='targetCode_id')  # Field name made lowercase.
    request = models.ForeignKey('Request', models.DO_NOTHING, primary_key=True)


    class Meta:
        managed = False
        db_table = 'analysis_result'
        unique_together = (('request', 'targetcode'),)

啊,是的,欢迎使用其中一个:所有表/模型都应该有一个可用于更新的主键字段。如果没有,则必须为更新编写原始SQL,因为
save
将假定在
where
子句中使用名为id的隐式主键字段。

AnalysisResult.objects.filter(request=req.request\u id)
filter by primary key等于某个值,您应该只获得一条记录,是吗?为什么要循环?@BearBrown
unique_-together=(“请求”、“目标代码”),
request_-id+targetcode-id使记录在一起是唯一的。