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,我想知道为什么它不打印空第一个,而第二个则工作正常。虽然我得到了我期望的结果。可能查询已被执行。而且一次只执行一个。
实际回报
{
"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) 我有我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分组并按日期排序显然很容易. …