我有一个艺术家和绘画的数据库,我想根据艺术家姓名和绘画标题进行查询。标题在一个json文件中(艺术家的名字来自ajax),所以我尝试了一个循环。在
def rest(request):
data = json.loads(request.body)
artistname = data['artiste']
with open('/static/top_paintings.json', 'r') as fb:
top_paintings_dict = json.load(fb)
response_data = []
for painting in top_paintings_dict[artist_name]:
filterargs = {'artist__contains': artistname, 'title__contains': painting}
response_data.append(serializers.serialize('json', Art.objects.filter(**filterargs)))
return HttpResponse(json.dumps(response_data), content_type="application/json")
我不需要像json那样为一些难看的对象返回一个好的json列表。在
^{pr2}$每一个艺术家都有一个作品。在
def rest(request):
data = json.loads(request.body)
artistname = data['artiste']
response_data = serializers.serialize("json", Art.objects.filter(artist__contains=artistname))
return HttpResponse(json.dumps(response_data), content_type="application/json")
我只需要按标题和艺术家过滤我的查询。在
对绘画标题进行} objects 到{}所有可能的绘画名称:
__contains
搜索的最有效方法是使用^{那会给你一堆画。我怀疑你的双重连载是不正确的,但你似乎很满意在一个艺术家的名字的情况下,所以我把它留给你。在
这里的}的函数句柄,然后我使用一个生成器表达式为每个绘画名称创建一个
reduce
调用是一种建立|
多个Q
对象的结果-operator.or_
是{Q
对象。在您的问题是,您将数据序列化为json两次—一次是使用
serializers.serialize
,另一次是使用json.dumps
。在我不知道您的应用程序的具体细节,但可以在django中链接过滤器。所以我同意你的第二种方法,把线换掉
与
^{pr2}$检查queryset documentation。在
相关问题 更多 >
编程相关推荐