小编Aas*_*wat的帖子

“connection.queries”在 Django 中不返回任何内容

from django.db import connection, reset_queries

印刷: []

reset_queries()
p = XModel.objects.filter(id=id) \
.values('name') \
.annotate(quantity=Count('p_id'))\
.order_by('-quantity') \
.distinct()[:int(count)]
print(connection.queries)
Run Code Online (Sandbox Code Playgroud)

虽然这会打印:

reset_queries()
tc = ZModel.objects\
.filter(id=id, stock__gt=0) \
.aggregate(Sum('price'))
print(connection.queries)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为了简单起见,我更改了字段名称。(字段是父表的,即__多级的)

我试图打印 Django 所做的 MySQL 查询并遇到了connection.queries,我想知道为什么它不打印空第一个,而第二个则工作正常。虽然我得到了我期望的结果。可能查询已被执行。而且一次只执行一个。

python sql django django-queryset

9
推荐指数
2
解决办法
4116
查看次数

将嵌套的序列化数据作为一个整体获取

实际回报

{
"store_product_mapping":{
  "master_product":{
    "name": "abc",
    "description": "xyz"
    }
  }
"selling_price": 445
}
Run Code Online (Sandbox Code Playgroud)

序列化器看起来像:

class GrandParentSerializer(serializers.ModelSerializer):
  class Meta:
  model = Z
  fields = ('name', 'description')

class ParnetSerializer(serializers.ModelSerializer):
  master_product = GrandParentSerializer(many=False, read_only=False)
  class Meta:
  model = Y
  fields = ('master_product',)

class ChildSerializer(serializers.ModelSerializer):
  store_product_mapping = ParnetSerializer(many=False, read_only=False) 
  class Meta:
  model = X
  fields = ('store_product_mapping', 'selling_price')
Run Code Online (Sandbox Code Playgroud)

我使用嵌套rest_framework.serializer.ModelSerializer来序列化多个级别的数据,但作为响应,我需要它是这样的。我需要制作一本新字典并循环更新字典吗?或者有没有捷径可以做同样的事情?

{
"name": xyz
"description": abcd
"price": 10
}
Run Code Online (Sandbox Code Playgroud)

python django django-models django-rest-framework

3
推荐指数
1
解决办法
52
查看次数

根据字段值重现/中断行

我有我dataframe的:

id        date     value
1         2016     3
2         2016     1
1         2018     1
1         2016     1.1
Run Code Online (Sandbox Code Playgroud)

现在我想通过逻辑将某些奇怪的原因重现行:

if value > 1
    reproduce row value times - 1
    with value = 1
    or fraction left for last unit
Run Code Online (Sandbox Code Playgroud)

为了更好地理解,只考虑第一行dataframeie:

id        date     value
1         2016     3
Run Code Online (Sandbox Code Playgroud)

我将其划分为3行:

id        date     value
1         2016     1
1         2016     1
1         2016     1
Run Code Online (Sandbox Code Playgroud)

但考虑最后一行,即:

id        date     value
1         2016     1.1
Run Code Online (Sandbox Code Playgroud)

哪个被打破为:

id        date     value
1         2016     1
1         2016     0.1
Run Code Online (Sandbox Code Playgroud)

即如果有任何分数,则单独分解,否则分成一个单元

然后按ID分组并按日期排序显然很容易. …

python-3.x pandas pandas-groupby

3
推荐指数
1
解决办法
46
查看次数