Django民意调查教程 - 管理员列表过滤器错误

时间:2015-07-10 14:58:46

标签: django

我正在研究Django的民意调查教程,我似乎无法让列表过滤器工作。本教程中的说明只是将以下行添加到QuestionAdmin:

list_filter = ['pub_date']

当我在终端上执行python manage.py runserver时,我得到了这个:

错误: :(admin.E108)'list_display [0]'的值是指'question_text',它不是可调用的,'QuestionAdmin'的属性,或'polls.Question'上的属性或方法。

:( admin.E108)'list_display [1]'的值是指'pub_date',它不是可调用的,'QuestionAdmin'的属性,或'polls.Question'上的属性或方法。< / p>

:( admin.E116)'list_filter [0]'的值是指'pub_date',它不引用字段。

我的polls / admin.py代码:

from django.contrib import admin
from .models import Choice, Question
# Register your models here.

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    list_display = ('question_text','pub_date','was_published_recently')
    list_filter = ['pub_date']

admin.site.register(Question, QuestionAdmin)

我的polls / models.py代码:

import datetime
from django.db import models
from django.utils import timezone

class Question(models.Model):
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?'


class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

1 个答案:

答案 0 :(得分:1)

在哪里......

question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

... Writing your first Django app, part 1的一部分?

BTW这一行

# ...

表示某些代码之前已经解释过省略,但您显然需要它...所以返回first tutorial page并重新检查所有内容......