我正在研究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
答案 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并重新检查所有内容......