小编Moh*_*sen的帖子

Django Rest Framework只读模型序列化器

我想要一个完全只读ModelSerializer,即只是列表/检索方法

最好的方法是什么?

python django-rest-framework

15
推荐指数
4
解决办法
1万
查看次数

Django在预取过滤相关模型上进行注释

我有一个 User 模型,每个 User 可以通过这个关系有很多 Post:

class Post(models.Model):
    ...
    user = models.ForeignKey('User', related_name='posts')
Run Code Online (Sandbox Code Playgroud)

,并且每个帖子都有一个like_count(整数字段),我想让用户(沿着他们的帖子)拥有超过 n 个帖子,并且被喜欢的次数超过 m 次,我这样做:

User.objects.prefetch_related(Prefetch('posts', queryset=Post.objects.filter(like_count__gte=m), to_attr='top_posts')).annotate(top_post_count=Count('top_posts')).filter(top_post_count__gte=n)
Run Code Online (Sandbox Code Playgroud)

但是,我得到:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py", line 912, in annotate
    clone.query.add_annotation(annotation, alias, is_summary=False)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/query.py", line 971, in add_annotation
    summarize=is_summary)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/aggregates.py", line 19, in resolve_expression
    c = super(Aggregate, self).resolve_expression(query, allow_joins, reuse, summarize)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/expressions.py", line 513, in resolve_expression
    c.source_expressions[pos] = arg.resolve_expression(query, allow_joins, reuse, summarize, for_save)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/expressions.py", line 463, in …
Run Code Online (Sandbox Code Playgroud)

django prefetch

10
推荐指数
1
解决办法
2207
查看次数

标签 统计

django ×1

django-rest-framework ×1

prefetch ×1

python ×1