2017-07-08 11 views
0

内のオブジェクトのリストを解析し、このように印刷されたオブジェクトのリストがあります:私はjson.loads(クエリセットを使用しているため、個々のオブジェクトのメール属性を抽出したいジャンゴ

[<Intermediate_table: Intermediate_table object>, <Intermediate_table: Intermediate_table object>, <Intermediate_table: Intermediate_table object>, <Intermediate_table: Intermediate_table object>] 

は、 )、それがエラーを示す:期待値:行1列1(CHAR 0)

#I also tried without json.loads: 
for i in queryset:#the list is in queryset variable 
print(i.subject)#this gives an error 

を関数(それはadmins.pyファイルで、それは管理者に特定のアクションのために呼び出されますこのモデルのページ):

def authenticate_(modeladmin, request, queryset): 
    #q = queryset.email; 
    #req = json.loads(str(queryset)  
    #q = req['email'] 
    for i in queryset: 
     print(json.loads(str(i))) 
    print('asdasdadasd-->'+str(queryset)) 

エラートレース:

Traceback: 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
    112.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/contrib/admin/options.py" in wrapper 
    465.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/utils/decorators.py" in _wrapped_view 
    99.      response = view_func(request, *args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    52.   response = view_func(request, *args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/contrib/admin/sites.py" in inner 
    198.    return view(request, *args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/utils/decorators.py" in _wrapper 
    29.    return bound_func(*args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/utils/decorators.py" in _wrapped_view 
    99.      response = view_func(request, *args, **kwargs) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/utils/decorators.py" in bound_func 
    25.     return func(self, *args2, **kwargs2) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/contrib/admin/options.py" in changelist_view 
    1364.     response = self.response_action(request, queryset=cl.get_queryset(request)) 
File "/home/saurabh/Music/Project_ques10/test/lib/python3.4/site-packages/django/contrib/admin/options.py" in response_action 
    1117.    response = func(self, request, queryset) 
File "/home/saurabh/Music/Project_ques10/ques10-funda/biostar/apps/quespaper/admin.py" in authenticate_ 
    83.   print(json.loads(str(i))) 
File "/usr/lib/python3.4/json/__init__.py" in loads 
    318.   return _default_decoder.decode(s) 
File "/usr/lib/python3.4/json/decoder.py" in decode 
    343.   obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
File "/usr/lib/python3.4/json/decoder.py" in raw_decode 
    361.    raise ValueError(errmsg("Expecting value", s, err.value)) from None 

Exception Type: ValueError at /admin/quespaper/intermediate_table/ 
Exception Value: Expecting value: line 1 column 1 (char 0) 

各オブジェクトを解析する正しい方法を提案してください。

ありがとうございました。

+0

エラーを転記してください。エラーメッセージが利用可能なときに簡単にデバッグできます –

+0

https://gist.github.com/Sharma96/7f1a1a5683a97322eb440caea5a6fdab – ssharma

+0

'loads(queryset)'が間違っています。あなたの質問には 'queryset'がリスト/クエリーセットとして印刷されていますか?どうしてこれは、 '' values_list() ''(https://docs.djangoproject.com/ja/1.11/ref/models/querysets/#values-list)ではなく、これがどうして? 'Intermediate_table'はどのように見えますか? – dhke

答えて

0

問題は、デコードしようとしているオブジェクトが最初にエンコード可能なjsonではないことです。 JSONで受け入れられる型は、文字列、数値、ブール値、配列、およびdictです。したがって、このオブジェクトを文字列に変換して解読しようとすると、Pythonはそれを正しいオブジェクトにデコードできないため、エラーが発生します。あなたが本当にJSON形式を使用したい場合は

、あなただけのように最初にそれをエンコードした後の文字列表現にそれを使用することができます:あなたは、あなたのモデルのために__()メソッドをdefine__strする必要があるかもしれません

for i in queryset: 
    print(json.loads(json.dumps(str(i)))) 

Intermediate_tableオブジェクトに属性メールがないため、json.loads()のないコードが失敗しています。

+0

あなたのメソッドはエラーを返します:__ str__は文字列を返しませんでした(Intermediate_table型) – ssharma

+0

ああ!私は問題が__str__表現であると思います。あなたは単純に(str(i))を印刷し、それが何を印刷するかを見ることができますか?それがエラーを出したりオブジェクトを出力したりする場合は、あなたのクラスの__str __()メソッドを定義しなければなりません –

+0

__str __()は問題でしたが、あなたのコメントの直前に考え出しました。 。 – ssharma