Python 更新记录时出现Django IntegrityError
我有一个主键为双列的模型。我对它做了一个过滤,得到我想要的记录,更改一个字段并保存它。据我所知,save将更新记录,并且不会在db中创建模型的新实例。所以应该没问题,但是当我试图保存记录时,我遇到了一个integrityErrorPython 更新记录时出现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
重复条目'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等于某个值,您应该只获得一条记录,是吗?为什么要循环?@BearBrownunique_-together=(“请求”、“目标代码”),
request_-id+targetcode-id使记录在一起是唯一的。