1. ホーム
  2. python

AttributeError: 'tuple' オブジェクトに '_meta' 属性がない Solution

2022-02-12 12:23:20
<パス

エラーメッセージを表示します。タプルオブジェクトに属性 '_meta' がありません?
以下は私のコードです。

#import json module
import json
from django.core import serializers
from django.http import JsonResponse

def ajax_jz(request):
        # Get the database connection and get the cursor
        cur = connection.cursor()
        # Native SQl statement (concatenated table query (no primary and foreign key relationships))
        sql = 'select j.id,h.GPS,j.SystemStatus,j.YuLiu3 from tower_project_jizhan j inner join tower_project_hjinformation h on j.SheBei_Code= h. SheBei_Code'
        #execute command
        cur.execute(sql)
        #return all the data queried
        resultData = cur.fetchall()
        for item in resultData:
            print(item)
        # Serialize the data and convert it to JSON
        ajax_bmsValue = serializers.serialize("json", resultData)
        # return data
        return HttpResponse(ajax_bmsValue)


データを照会することはできましたが、データをシリアライズするときにエラーが発生しました。渡された型が間違っていたのでしょうか、それとも? django のシリアライズクラスは django.core の下の serializers フォルダにあり、 base.py ファイルはシリアライザとデシリアライザの基本クラスといくつかの例外を定義し、 init.py ファイルは形式などに基づいて対応するシリアライザを選択する方法を定義しています。
init.py

def get_deserializer(format):
if not _serializers:
    _load_serializers()
if format not in _serializers:
    raise SerializerDoesNotExist(format)
return _serializers[format].Deserializer


def serialize(format, queryset, **options):
    """
    Serialize a queryset (or any iterator that returns database objects) using
    a certain serializer.
    """
    s = get_serializer(format)()
    s.serialize(queryset, **options)
    return s.getvalue()


解決策
インポートjson

return JsonResponse(json.dumps(data), safe=True)

def ajax_jz(request):
    #Get the cursor
    cur = connection.cursor()
    sql = 'select j.id,h.GPS,j.SystemStatus,j.YuLiu3 from tower_project_jizhan j inner join tower_project_hjinformation h on j.SheBei_Code= h. SheBei_Code'
    cur.execute(sql)
    resultData = cur.fetchall()
    for item in resultData:
        print(item)
     # use json.dumps
    return HttpResponse(json.dumps(resultData))
    #Close the connection
    cur.close()