类在Django中没有“对象”成员

时间:2018-08-13 18:41:23

标签: python django django-views

from django.http import HttpResponse
from .models import Destination
def index(request):
    boards = Destination.objects.all()
    boards_names = list()
    for Destination in boards:
     boards_names.append(Destination.destinationtext)
     response_html = '<br>'.join(boards_names)
     return HttpResponse(response_html)

我只是为了练习django框架而编写了这段代码,但是我通过pylint遇到了以下错误:

E1101:Class 'Destination' has no 'objects' member
E0601:Using variable 'Destination' before assignment

2 个答案:

答案 0 :(得分:1)

您有两个不同的问题,而不仅仅是您所说的一个:

<div class="backdrop water"> <p class="text water">Water</p> <div class="overlay water"></div> </div>:是警告 发生这种情况是因为E1101:Class 'Destination' has no 'objects' member不了解我们的特殊Django变量。像pylint-django这样的pylint插件可以解决问题。

pylint:在代码的for循环中,您定义了一个名为E0601:Using variable 'Destination' before assignment的变量。这不仅是不好的做法,因为python变量必须位于Destination中,但它会覆盖lowercase_underscore,这就是导致此错误的原因。您可能想做这样的事情:

Destination

答案 1 :(得分:1)

您在自己的观点中写道:

for Destination in boards:
    # ...

这意味着Python将Destination视为 local 变量,这是在分配前您使用使用的局部变量。

您可以在循环中重命名变量以解决问题,但实际上,您可以使用.values_list(..)使它变的更优雅,更快捷:

from django.http import HttpResponse
from .models import Destination

def index(request):
    response_html = '<br>'.join(
        Destination.objects.values_list('destinationtext', flat=True)
    )
    return HttpResponse(response_html)

尽管如此,我仍然不相信这可以解决问题,因为destinationtext可能包含HTML,然后HTML会在响应中混在一起。通常,最好使用模板。