簡體   English   中英

錯誤:admin.E108 和 admin.E116 Django 框架 Python

[英]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_displaylist_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM