我正在尝试为我的一个项目构建一个复杂的(对我来说)查询.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) 我有以下序列化器:
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 序列化
我有什么错?如何为图像字段编写测试?
我面临一个改变以下结构的问题.....
这是我得到的结构
{
"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)
在这段代码中,我从在我的代码的另一部分使用的函数 …