如何修改计算的查询集值? (反转多对一关系)

How to modify computed queryset values ? (Reversed many - to - one relationship)

class Style(Model):
    id ....
    name .... 

class Song(Model):
    ...
    style = ForgeignKey(Style, related_name="songs")

queryset = Style.objects.all()
queryset[0].songs = queryset[0].songs.filter(something=1)
#or
queryset[0].songs.set(queryset[0].songs.filter(something=1))

这是我的实际代码,但它除了过滤之外不起作用...我想分配 queryset.songs 新过滤的歌曲...

或者在这种情况下是否有其他有效过滤的方法?

您可以使用 Prefetch object [Django-doc]:

from django.db.models import Prefetch

queryset = Style.objects.prefetch_related(
    Prefetch('songs', Song.objects.filter(something=1))
)

如果您访问 queryset[0].songs,您将只能获得带有 something=1 的歌曲。 querset.

中的所有 Style 当然都是这种情况