从注解返回的字典列表中获取name键的值,然后按名称排序?

Posted

技术标签:

【中文标题】从注解返回的字典列表中获取name键的值,然后按名称排序?【英文标题】:Get the value of name key from the list of dictionaries return by the annotate and then sort by name? 【发布时间】:2020-05-02 22:37:59 【问题描述】:

我的代码

def get_areas(self, obj):
        text = []
        if obj.areas and not obj.areas == []:
            print(json.loads(obj.area_count))
            print(type(obj.area_count))
            return json.loads(obj.area_count)
        return "-"

get_areas.short_description = "Areas"
get_areas.admin_order_field= "area_count"

def get_queryset(self, request):
        from django.contrib.postgres.fields.jsonb import KeyTextTransform
        qs = super(UserAdmin, self).get_queryset(request)
        filtered_query = qs.filter(
            is_superuser=False, is_staff=False
        ).annotate(
            wishlist_count=Count('wishlist', distinct=True),
            booking_count=Count('booking', distinct=True),
            review_count=Count('review', distinct=True),
            suggestion_count=Count('suggestion', distinct=True),
            home_city=NullIf('home__city'),
            home_country=NullIf('home__country'),              
            area_count = F('areas'),

        )

我得到的是一个 str 类型的列表,看起来像:

"['id': 98, 'name': 'Khalifa City and Masdar City', 'city': 'Abu Dhabi',
'id': 99, 'name': 'Masdar City', 'city': 'Abu Dhabi']"
<class 'str'>

我想要的是名称列表:

['Khalifa City and Masdar City','Madsar City']

那么,如何将area_count = F('areas') 的结果返回为 list 而不是 str

注意:该列表可以包含超过 1 个字典,我只想返回名称。任何努力都将不胜感激

【问题讨论】:

您返回的是字典(或 JSON 对象),而不是字符串 我正在尝试返回一个字典对象,但无法返回它@TimothyWong,因为 F('areas') 将字典列表作为导致问题的字符串返回。 【参考方案1】:

您需要annotate by F("areas") 来做什么?

只需将其删除并访问“区域”作为 QS 中对象的属性。

【讨论】:

那么 admin_order_field 呢?我应该传递什么? 我对问题进行了一些更改,以帮助您了解区域不是我要注释的唯一字段,因此我不能将“区域”作为属性,因为我无法定义任何内容对于 admin_order_field @ChetanVashisth 它应该在不使用 F 的实例上可用。 '["Name":'CV',"class":"hello","Name":'NYC',"class":"hello"]' 这是字符串存储在字符字段中,我想按名称字段排序,那么我们该怎么做??? @Krzysztof Szularz 在 Python 中排序。

以上是关于从注解返回的字典列表中获取name键的值,然后按名称排序?的主要内容,如果未能解决你的问题,请参考以下文章

IOS:如何从字典中获取单个键的值

python 字典

如何从 Javascript 中的对象列表中获取键的值?

使用 NSPredicate 仅从字典数组中获取特定键的值

如何在 Dart Flutter 的字典数组中获取某些键的值?

Python 字典方法