Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';dict';对象没有属性'_meta&x27;_Python - Fatal编程技术网

Python ';dict';对象没有属性'_meta&x27;

Python ';dict';对象没有属性'_meta&x27;,python,Python,错误:“dict”对象没有属性“\u meta”这与我如何调用字典有关吗?我想把两个物体合并成一个。然后将其解析为json 这是回溯 def participant_specific_donation(self, participant): donations = Donation.objects.filter(participant = participant) helper = {} for donation in donations: ##hel

错误:“dict”对象没有属性“\u meta”这与我如何调用字典有关吗?我想把两个物体合并成一个。然后将其解析为json

这是回溯

def participant_specific_donation(self, participant):
    donations = Donation.objects.filter(participant = participant)

    helper = {}

    for donation in donations:
        ##helper['donation_date'] = donation.date
        helper['donation_amount'] = donation.amount
    return helper

def participant_specific(request, participant):
helper = RelayFunctions()
info = helper.participant_specific_donation(participant)
info1 = helper.participant_specific_milestone(participant)

data = [ 'participant_specific_donation' : info , 'participant_specific_milestone' : info1 ]
json_serializer = serializers.get_serializer("json")()
response = json_serializer.serialize(data, ensure_ascii=False)
return HttpResponse(response, mimetype="application/json")

我在代码片段中看到了两个问题

首先,这里的逻辑问题是:

Traceback:
 File "/home/vtrelayc/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
   111.                         response = callback(request, *callback_args, **callback_kwargs)
 File "/home/vtrelayc/projects/relay/relayapp/views.py" in participant_specific
   192.     response = json_serializer.serialize(data, ensure_ascii=False)
 File "/home/vtrelayc/lib/python2.6/site-packages/django/core/serializers/__init__.py" in serialize
  98.     s.serialize(queryset, **options)
File "/home/vtrelayc/lib/python2.6/site-packages/django/core/serializers/base.py" in serialize
  46.             concrete_model = obj._meta.concrete_model

Exception Type: AttributeError at /participants/specific/1/
Exception Value: 'dict' object has no attribute '_meta'

def participant_specific(request, participant):
helper = RelayFunctions()
info = helper.participant_specific_donation(participant)
info1 = helper.participant_specific_milestone(participant)
data = [ 'participant_specific_donation' : info , 'participant_specific_milestone' : info1 ]
json_serializer = serializers.get_serializer("json")()
response = json_serializer.serialize(data, ensure_ascii=False) ...
return HttpResponse(response, mimetype="application/json")
如果捐赠有多个元素,那么您将只得到列表中的最后一个元素,因为您正在循环
捐赠
,并且每次都将值分配给
帮助者

我认为您需要计算总金额,您可以按如下所示进行计算:

for donation in donations:
    ##helper['donation_date'] = donation.date
    helper['donation_amount'] = donation.amount
第二,线路:

helper['donation_amount'] += donation.amount
将给您一个语法错误

看来你这里需要一本字典。初始化词典的正确方法是使用大括号
{}

data = [ 
    'participant_specific_donation': info,
    'participant_specific_milestone': info1 
]

如果您希望所有捐款集中在一个地方,您可以先列出一个清单:

data = { 
    'participant_specific_donation': info, 
    'participant_specific_milestone': info1
}
然后将其指定给帮助器词典:

donation_amount = [donation for donation in donations]

data=[…
行将产生语法错误。这是真正的代码吗?data=['foo':bar]看起来很奇怪。这是数组还是dict?能否发布准确的回溯,以及回溯引用位置周围的代码?t-8ch:data={'obj1':obj1,'obj2':obj2}json.dumps(数据)来自:谢谢你,AshRj!!制作一个字典是可行的,但我确实想要“捐赠”中的每个元素。所以我会在字典中制作一个数组来实现这一点?我知道这已经有2年了,但你的意思是
捐赠金额=[generation.amount for generation in generations]
?你写的清单理解除了复制一份
捐款
,没有任何作用。
helper['donation_amount'] = donation_amount