django:如何在values()中使用多对多关系?

django:如何在values()中使用多对多关系?,django,Django,我需要按需要原始模型中的几个连接的字段对结果进行分组: // response_filter_args is created dynamically responses = Response.objects.filter(**response_filter_args) \ .values('customer__tags__tag') \ # django doesn't like this .annotate(average_sc

我需要按需要原始模型中的几个连接的字段对结果进行分组:

// response_filter_args is created dynamically
responses = Response.objects.filter(**response_filter_args) \
        .values('customer__tags__tag') \                  # django doesn't like this
        .annotate(average_score=Avg('rating__score'))
响应->客户->标记(指向标记的多对多字段)->标记(标记为字符串)

模型包括:

class Response(models.Model):
    customer = models.ForeignKey(Customer)
    ...

class Customer(models.Model):
    tags = models.ManyToManyField(Tag)
    ...

class Tag(models.Model):
    tag = models.CharField(max_length=255)
    ...
我在计算平均评分。为了让它工作,我需要告诉django按“tag”分组,但它拒绝。它给出了一个错误:

Invalid field name: 'customer__tags__tag'
有人知道我怎样才能把它按标签分组吗?我已经尝试了我能想到的customer_tags_tag中所有下划线的组合,但没有任何效果

如果您查看,您将看到多对多现场支持仅添加到开发版本中,并且:

先前[pre-dev version]的values()方法没有为ManyToManyField属性返回任何内容,如果您试图将此类字段传递给它,则会引发错误

如果您签出,您将看到多对多现场支持仅添加到开发版本中,并且:

先前[pre-dev version]的values()方法没有为ManyToManyField属性返回任何内容,如果您试图将此类字段传递给它,则会引发错误


我不认为这会起作用,因为django无法通过一个查询获得通过多个关系关联的对象。

我不认为这会起作用,因为django无法通过一个查询获得通过多个关系关联的对象。

没有您的模型很难判断,但是,如果您的客户模型中有一个标签字段,那么只需引用该字段即可。
。值(客户标签)
客户标签也不起作用。我已将我的模型添加到我的问题中。如果没有您的模型,很难判断,但是如果您的客户模型中有一个标记字段,那么只需引用该字段即可。值(客户标记)客户标记也不起作用。我在问题中添加了我的模型。