python - 更新记录时发生 Django IntegrityError

标签 python django python-3.x django-models

我有一个以双列作为主键的模型。我对其进行过滤并获取我想要的记录,更改字段并保存。据我所知,保存将更新记录,并且不会在数据库中创建模型的新实例。所以应该没问题,但当我尝试保存记录时,我遇到了完整性错误 Duplicate entry '10-2' for key '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'),)

最佳答案

啊,是的,欢迎来到 django's 之一strongest opinions :所有表/模型都应该有一个可用于更新的主键字段。如果没有这个,则必须为更新编写原始 SQL,因为 save 会假设有一个名为 id 的隐式主键字段可在 where 子句中使用.

关于python - 更新记录时发生 Django IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152379/

相关文章:

php - 什么时候 Web 框架不方便使用?

python - 我在哪里被限制?

python - 如何在 python Bokeh 中对按钮单击执行 onclick 操作?

python - 类似 '%term%' 搜索的算法

python - 如何将 for 循环(字典)的输出从模型检索到 View ?

Python 和 BeautifulSoup - 在带有 <dt> 和 <dd> 标签的 div 中指定字段时遇到问题

python - 需要对 numpy 索引进行一些澄清吗?

python - 了解 CTC 的 TF 实现如何工作

python - 错误信息 : InterfaceError: <unprintable InterfaceError object>

python - 有没有办法在 Python 中获取对象的当前引用计数?