首页 > 解决方案 > 为什么我仍然得到“DeferredAttribute”对象没有属性“对象”?

问题描述

经过几天的搜索,我仍然无法克服这个障碍。我只是想打印卖家的描述列表作为视图。这就是我正在使用的...

模型.py:

from django.db import models


class Sellers(models.Model):
    index = models.BigIntegerField(blank=True, null=False)
    seller = models.TextField(db_column='SELLER', blank=False, null=False,
                          primary_key=True)
    block = models.TextField(db_column='BLOCK', blank=False, null=False)  
    street = models.TextField(db_column='STREET', blank=False, null=False)  
    space = models.TextField(db_column='SPACE', blank=False, null=False) 
    description = models.TextField(db_column='DESCRIPTION', blank=True, null=True)
    document_with_idx = models.TextField(blank=False, null=False) 
    document_with_weights = models.TextField(blank=False, null=False)


class Meta:
    managed = False
    db_table = 'Sellers'


def __str__(self):
    return self.index

'''

视图.py:

from django.http import HttpResponse
from search.models import Sellers


def search(request):
    output = Sellers.description.objects.all()
    return HttpResponse(output)

'''

任何方向都将不胜感激,我觉得我已经阅读了与此相关的所有相关帖子。想是时候用我的确切设置发布一个问题了。谢谢!

标签: pythondjango

解决方案


Sellers.description指的是领域,所以你基本上得到了TextField对象,而不是descriptions对象之一,因为Sellers是一个类,而不是一个Sellers对象。您可以通过以下方式获取description值:

from django.http import JsonResponse
from search.models import Sellers

def search(request):
    output = Sellers.objects.values_list('description', flat=True)
    return JsonResponse({'data': list(output)})

此外,您不能简单地将其包装在 a 中HttpResponse,因为它需要一个类似字符串/字节的对象。例如,您可以使用 JSON 对其进行编码JsonResponse


推荐阅读