class ImageSerializer(serializers.ModelSerializer):
is_annotated = serializers.SerializerMethodField('has_annotation')
class Meta:
model = Image
fields = '__all__'
@staticmethod
def has_annotation(image):
return image.annotation_set.count() > 0
class ImageViewSet(viewsets.ModelViewSet):
serializer_class = ImageSerializer
lookup_field = 'id'
permission_classes = [
Or(IsAdmin),
IsAuthenticated
]
def get_queryset(self):
queryset = Image.objects
is_annotated_filter = self.request.query_params.get('is_annotated', None)
if is_annotated_filter is not None:
queryset = queryset.filter.annotate(
cnt=Count('annotation')).filter(cnt__gte=1)
queryset_order = get_queryset_order(self.request)
return queryset.order_by(queryset_order).all()
我想您误解了:1)序列化器MethodField,它的主要用途是只读的,并且序列化器不会用于筛选QuerySet。
我会更像这些来过滤:
from django.db.models import Count
queryset.filter.annotate(
cnt=Count('annotation_set')
).filter(cnt__gte=1)
但是...你可以走得更好:
from django.db.models import Count
queryset = Image.objects.annotate(
cnt_annotations=Count('annotation_set')
)
@staticmethod
def has_annotation(image):
if hasattr(obj, 'has_annotation'):
return bool(obj.cnt_annotations)
else:
return None
问题内容: 假设我有表,以及: 我想知道如何找到足球(30)和棒球(50)俱乐部中的所有学生。 虽然此查询不起作用,但这是我到目前为止最接近的东西: 问题答案: 我很好奇 众所周知,好奇心以杀死猫而闻名。 那么,哪一种最快的方法是给猫皮呢? 此测试的精确蒙皮环境: *Debian Squeeze上的 *PostgreSQL 9.0 ,具有不错的RAM和设置。 6.000名学生,24.000个俱乐部
问题内容: 我已经查看了与该问题相关的Stack Overflow上的其他问题,但是似乎没有一个问题能清楚地回答这个问题。 我们有一个名为sp_who2的系统存储过程,该过程为服务器上所有正在运行的进程返回信息的结果集。我想过滤存储过程返回的数据;从概念上讲,我可能会这样做: 但是,该方法不起作用。有什么好的做法可以实现查询存储过程的返回数据的目标,最好无需查看原始存储过程的代码并对其进行修改。
我现在有一只熊猫。数据帧,它有一个和一组值。 我想排除给定
我有一个csv,它具有以下结构:
我被安排了即将到来的测试作业,我需要在一个充满电影细节的数据库中搜索带有标点符号的片名。 我唯一的想法是用MySQL的in运算符查找其中带有特定标点符号的名称。 或者另一种方式: 但是,它在逻辑上是不正确的。当我筛选“.”/dot character/时,它也会返回带有“I”的标题。 你能帮帮我吗?提前谢谢!
是否有一种方法可以使用来完成这一任务,而不需要为每个Patamenter组合创建大量/语句?