尝试在 ContentType 下访问 Django 中的 'content_object' 字段

Trying to access 'content_object' fields in Django under ContentType

我正在尝试通过 Thing 查询集访问 Item 模型,但不断收到错误消息:

django.core.exceptions.FieldError: Field 'content_object' does not generate an automatic reverse relation and therefore cannot be used for reverse querying. If it is a GenericForeignKey, consider adding a GenericRelation.
class ThingContent(models.Model):

    content_id = models.AutoField(primary_key=True, null=False)
    thing = models.ForeignKey('Thing', on_delete=models.SET_NULL, null=True)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

我尝试通过添加 related_query_name 来更新 Item 上的字段,但没有成功。

self.queryset.filter(items__item_date=exact_item_date))
class Item(models.Model):
    id = models.AutoField(primary_key=True, null=False)
    item_date = models.DateField(**options)
    thing_content = GenericRelation('ThingContent', related_query_name='items')

content_object 是通用的。您必须按 object_idcontent_type 过滤才能知道您 FK 通用的对象。

您再试一次这样的查询:

    ThingContent.objects.filter(
        items__item_date=item_date,
        content_type=ContentType.objects.get_for_model(Item)
    )

此查询的意思是:查找所有 ThingContentItem 的映射,并且 item_date 符合您想要的过滤器。