【发布时间】:2018-06-17 13:19:01
【问题描述】:
我有一个双列作为主键的模型。我对其进行过滤并获取我想要的记录,更改字段并保存它。据我所知,保存将更新记录并且不会在数据库中创建模型的新实例。所以应该没问题,但是当我尝试保存记录时,我遇到了完整性错误Duplicate entry '10-2' for key 'PRIMARY'
这里是sn-p的代码:
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'),)
【问题讨论】:
-
AnalysisResult.objects.filter(request=req.request_id)按主键过滤等于某个值,您应该只获得一条记录是吗?你为什么要循环? -
@BearBrown
unique_together = (('request', 'targetcode'),)request_id + targetcode_id 使记录一起唯一。
标签: python django python-3.x django-models