[英]ERROR: admin.E108 and admin.E116 Django Framework Python
我收到以下兩個錯誤:
<class 'blog.admin.CommentAdmin'>: (admin.E108) 'list_display[4]' 的值指的是 'active',它不是可調用的,'CommentAdmin' 的屬性,或上的屬性或方法'博客.評論'。
<class 'blog.admin.CommentAdmin'>: (admin.E116) 'list_filter[0]'的值指的是'active',不是指Field。
這是我的 models.py 代碼:
from django.contrib.auth.models import User
# Create your models here.
STATUS = (
(0,"Draft"),
(1,"Publish")
)
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
updatedOn = models.DateTimeField(auto_now= True)
content = models.TextField()
createdOn = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=0)
class Meta:
ordering = ['-createdOn']
def __str__(self):
return self.title
class Comment(models.Model):
post = models.ForeignKey(
Post, on_delete=models.CASCADE, related_name='comments')
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
createdOn = models.DateTimeField(auto_now_add=True)
status = models.BooleanField(default=False)
class Meta:
ordering = ['createdOn']
def __str__(self):
return 'Comment {} by {}'.format(self.body, self.name)
這是我的 admin.py 代碼:
from django.contrib import admin
from .models import Post, Comment
# Register your models here.
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'status','createdOn')
list_filter = ("status", 'createdOn')
search_fields = ['title', 'content']
prepopulated_fields = {'slug': ('title',)}
@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
list_display = ('name', 'body', 'post', 'createdOn', 'active')
list_filter = ('active', 'createdOn')
search_fields = ('name', 'email', 'body')
actions = ['approveComments']
def approveComments(self, request, queryset):
queryset.update(active=True)
admin.site.register(Post, PostAdmin)
這是我的 forms.py 代碼:
from .models import Comment
from django import forms
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('name', 'email', 'body')
任何幫助是極大的贊賞。
status = models.IntegerField(choices=STATUS, default=0)
應該:
active = models.IntegerField(choices=STATUS, default=0)
消息明確“活動”不是字段
class Comment(models.Model):
post = models.ForeignKey(
Post, on_delete=models.CASCADE, related_name='comments')
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
createdOn = models.DateTimeField(auto_now_add=True)
status = models.BooleanField(default=False)
您的字段是:post、name、email、createdOn、status
因此在list_display
和list_filter
中創建一個名為 active 或 suppress active 的字段
我在下面遇到了同樣的錯誤:
錯誤:<class 'store.admin.PersonAdmin'>: (admin.E116) 'list_filter[0]' 的值引用 'PersonAgeFilter',它不引用字段。
將自定義過濾器PersonAgeFilter
分配給帶有括號的list_filter()時,如下所示:
# "store/admin.py"
from django.contrib import admin
from .models import Person
class PersonAgeFilter(admin.SimpleListFilter):
# ...
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_filter = ("PersonAgeFilter",)
# ↑ Parentheses ↑
所以,我從"PersonAgeFilter"
中刪除了括號,如下所示,然后錯誤就解決了。
# "store/admin.py"
from django.contrib import admin
from .models import Person
class PersonAgeFilter(admin.SimpleListFilter):
# ...
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_filter = (PersonAgeFilter,)
# Without parentheses
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.