小编Dav*_*yan的帖子

Django 1.11.4 Postgresql SELECT ARRAY到django orm

我正在尝试为我的一个项目构建一个复杂的(对我来说)查询.Django版本是1.11.4,PostgreSQL版本是9.6.

这是模型.

class Event(models.Model):
    ...
    name = models.CharField(max_length=256)
    classification = models.ForeignKey("events.Classification", related_name="events", null=True, blank=True)
    ...

class Classification(models.Model):
    ...
    segment = models.ForeignKey("events.ClassificationSegment", related_name="classifications", blank=True, null=True)
    ...

class ClassificationSegment(models.Model):
    ...
    name = models.CharField(max_length=256)
    ...
Run Code Online (Sandbox Code Playgroud)

我在这里封锁了一些地方,无法继续前进.

from django.db.models import CharField, Value as V
from django.db.models.functions import Concat
from django.contrib.postgres.aggregates import ArrayAgg
from django.db.models import OuterRef, Subquery
import events.models


event_subquery = events.models.Event.objects.filter(classification__segment=OuterRef('pk')) \
.annotate(event=Concat(V('{id:'), 'id', V(', name:"'), 'name', V('"}'), output_field=CharField()))

final_list = events.models.ClassificationSegment.objects.annotate(
event_list=ArrayAgg(Subquery(event_subquery.values('event')[:6])))
Run Code Online (Sandbox Code Playgroud)

我有一个原始查询.这里是.

final_events = events.models.ClassificationSegment.objects.raw('SELECT "events_classificationsegment"."id", "events_classificationsegment"."name", (SELECT ARRAY(SELECT CONCAT(\'{id:\', CONCAT(U0."id", …
Run Code Online (Sandbox Code Playgroud)

python django postgresql subquery

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

Django - 如何为 DRF ImageField 编写测试

我有以下序列化器:

from rest_framework.serializers import Serializer, ImageField

class MySerializer(Serializer):
    avatar = ImageField()
Run Code Online (Sandbox Code Playgroud)

我怎样才能为它编写单元测试?我使用了 Django TestCase,但它引发了一个错误。

from django.test import TestCase

class MySerializerTest(TestCase):

    def setUp(self):
        self.data = {}
        ...

    def test_image(self):
        import tempfile
        self.data['avatar'] = tempfile.NamedTemporaryFile(suffix=".jpg").file
        r_data = json.dumps(self.data)
        j_data = json.loads(r_data)
        serializer = MySerializer(data=j_data)
        if not serializer.is_valid():
            import pprint
            pprint.pprint(serializer.errors)
        self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误:

TypeError:“BufferedRandom”类型的对象不可 JSON 序列化

我有什么错?如何为图像字段编写测试?

django django-unittest django-rest-framework django-tests

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

如何更改响应结构

我面临一个改变以下结构的问题.....

这是我得到的结构

{
    "labels": [
        "List A",
        "List B",
        "List C",
        "List D"
    ],
    "data": [
        19,
        25,
        30,
        32
    ],
    "colors": [
        "#e15759",
        "#f28e2b",
        "#76b7b2",
        "#4e79a7"
    ],
}
Run Code Online (Sandbox Code Playgroud)

但是我想把下面的数据改成下面的方法

    {
        "category": "List D",
        "value": 32,
        "colors":         "#e15759"  
    },
    {
        "category": "List C",
        "value": 25
        "colors": "#f28e2b"
    },
    {
        "category": "List B",
        "value": 30,
        "colors": "#76b7b2"
    },
    {
        "category": "List A",
        "value": 19,
        "colors" : "#4e79a7"

    }
Run Code Online (Sandbox Code Playgroud)

这是我的代码

class AbcListAPI(APIView):
    def get(self, request, format=None):
        a = data_fuction()
        return Response(a)
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我从在我的代码的另一部分使用的函数 …

python django-rest-framework

0
推荐指数
1
解决办法
44
查看次数