FieldError 试图删除具有通用外键的 Django 实例
FieldError trying to delete Django instances with generic foreign key
在修复一些错误的同时,我做了两个测试实例。现在我完成了,我想删除这两个测试:
nj.delete()
raise FieldError("Cannot resolve keyword '%s' into field. "
django.core.exceptions.FieldError: Cannot resolve keyword 'content_type' into field. Choices are: awards, career_highlights, content_object_org, content_object_pc, content_type_org, content_type_org_id, content_type_pc, content_type_pc_id, date_updated, daterange, end_date, honors, object_id_org, object_id_pc, org_history_updated, publications, role, significant_event, start_date, title, uniqid, updated_Vitae_bio_and_org_history
这个错误 不是 我正在删除的模型,而是一个中间模型,它也有一个 通用外键 。 Django找不到'content_type'这个字段,因为没有这个字段,不知道为什么要找。有一个 content_type_org 和一个 content_type_pc。从上下文来看,我假设 Django 想要 content_type_org。但是我该如何告诉 Django 去寻找它呢?我还尝试转到超类并从那里删除相同的对象,
jn.delete()
但得到了同样的错误。
如评论中所述,没有看到您的模型很难提供帮助。尽管如此,您似乎已经重命名了 GenericForeignKey
中使用的 content_type
字段。您需要使用 GenericRelation
在相关模型上指定重命名的字段,如下所示:
class TaggedItem(models.Model):
content_type_fk = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_primary_key = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type_fk', 'object_primary_key')
class Blog(models.Model):
tags = GenericRelation(
TaggedItem,
content_type_field='content_type_fk',
object_id_field='object_primary_key',
)
详情见docs。
在修复一些错误的同时,我做了两个测试实例。现在我完成了,我想删除这两个测试:
nj.delete()
raise FieldError("Cannot resolve keyword '%s' into field. " django.core.exceptions.FieldError: Cannot resolve keyword 'content_type' into field. Choices are: awards, career_highlights, content_object_org, content_object_pc, content_type_org, content_type_org_id, content_type_pc, content_type_pc_id, date_updated, daterange, end_date, honors, object_id_org, object_id_pc, org_history_updated, publications, role, significant_event, start_date, title, uniqid, updated_Vitae_bio_and_org_history
这个错误 不是 我正在删除的模型,而是一个中间模型,它也有一个 通用外键 。 Django找不到'content_type'这个字段,因为没有这个字段,不知道为什么要找。有一个 content_type_org 和一个 content_type_pc。从上下文来看,我假设 Django 想要 content_type_org。但是我该如何告诉 Django 去寻找它呢?我还尝试转到超类并从那里删除相同的对象,
jn.delete()
但得到了同样的错误。
如评论中所述,没有看到您的模型很难提供帮助。尽管如此,您似乎已经重命名了 GenericForeignKey
中使用的 content_type
字段。您需要使用 GenericRelation
在相关模型上指定重命名的字段,如下所示:
class TaggedItem(models.Model):
content_type_fk = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_primary_key = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type_fk', 'object_primary_key')
class Blog(models.Model):
tags = GenericRelation(
TaggedItem,
content_type_field='content_type_fk',
object_id_field='object_primary_key',
)
详情见docs。