ERROR: admin.E108 и admin.E116 Django Framework Python

<class 'blog.admin.CommentAdmin'>: (admin.E108) Значение 'list_display[4]' ссылается на 'active', который не является вызываемой переменной, атрибутом 'CommentAdmin', атрибутом или методом 'blog.Comment'.

<class 'blog.admin.CommentAdmin'>: (admin.E116) Значение 'list_filter[0]' относится к 'active', которое не относится к полю.

Я получаю эти две ошибки.

Вот мой код 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)
<
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)
Вот мой код admin.py:

Вот мой код forms.py:

from .models import Comment
from django import forms


class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body')

Любая помощь будет высоко оценена.

статус = models.IntegerField(choices=STATUS, default=0) должен быть активным = 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

Поэтому создайте поле с именем active или подавите active в list_display & list_filter

Я получил ту же ошибку, описанную ниже:

ERRORS: <class 'store.admin.PersonAdmin'>: (admin.E116) The value of '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
Вернуться на верх