【发布时间】:2015-09-29 09:31:08
【问题描述】:
我正在为 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' 上的属性或方法。
: (admin.E116) 'list_filter[0]' 的值是指 'pub_date',不是指一个 Field。
我的投票代码/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
【问题讨论】:
标签: django