Django admin内联重复键值违反了唯一约束

时间:2018-03-28 09:57:13

标签: python django

Python 3.6 Django 2.0

我有两种模式:

from django.contrib.contenttypes.fields import GenericRelation

@python_2_unicode_compatible
class Domain(models.Model):
    tool_result = GenericRelation('projects.ToolResult')


@python_2_unicode_compatible
class ToolResult(models.Model):
    tool = models.ForeignKey('projects.Tool', on_delete=models.CASCADE)
    class Meta:
        unique_together = ('content_type', 'object_id', 'tool')

然后在管理类中,我创建了通用的表格内联:

class ToolResultGenericTabularInline(GenericTabularInline):
    model = ToolResult
    extra = 0

@admin.register(Domain)
class DomainAdmin(admin.ModelAdmin):
    inlines = [ToolResultGenericTabularInline, ]

当我尝试通过内联保存相同的对象时,我收到错误:

  

重复键值违反了唯一约束   “projects_toolresult_content_type_id_object_i_71ee2c2e_uniq”详情:   密钥(content_type_id,object_id,tool_id)=(18,22,3)已经存在。

这是django的错误吗?

2 个答案:

答案 0 :(得分:-1)

检查here

Django门票#12028

答案 1 :(得分:-1)

在ToolResult类的元描述中:

class Meta:
        unique_together = ('content_type', 'object_id', 'tool')

唯一的联合线表示每个工具在ToolResults中应该是唯一的。如果删除此unique_together约束,则可以保存相同的对象。 我希望这个对你有用。