我看不到Cathegory列表管理员,该如何解决

时间:2019-06-05 07:58:03

标签: django django-models foreign-keys django-admin

我在models.py中注册了类别管理员。我通过ForenKey在Post模型中添加了该模型。但是,当我登录到管理控制台时,看不到我的类别,我只看到类别对象(1),类别对象(2)等。 我将为您提供打印屏幕和代码。

http://prntscr.com/nxt25y

如果是日本厨房或其他任何类别(即厨师的即时博客), 我看到类别对象,即我在打印屏幕上突出显示的对象。 我认为这没什么大不了的,但是我在django上工作了很长一段时间,所以我忘了很多东西。 你能发现一个错误吗?

谢谢大家

from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils.text import slugify
from ckeditor_uploader.fields import RichTextUploadingField


class Category(models.Model):
    name = models.CharField(max_length=150)
    slug = models.SlugField(max_length=150)

    class Meta:
        ordering = ('name',)
        verbose_name = 'catergory'
        verbose_name_plural = 'catergories'

        def __str__(self):
            return self.name


class Post(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(
        help_text="A short label, generally used in URLs.", default='', max_length=100)
    category = models.ForeignKey(
        Category, on_delete=models.CASCADE, default='New category')
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    content = RichTextUploadingField(blank=True, null=True)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        ordering = ['-date_posted']

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('detail', kwargs={'slug': self.slug})

    def __str__(self):
        return self.title

这是admin.py

from .models import Post, Category
from django.forms import ModelForm
from django.contrib.admin import ModelAdmin
from suit_ckeditor.widgets import CKEditorWidget


class PostForm(ModelForm):
    class Meta:
        widgets = {
            'name': CKEditorWidget(editor_options={'startupFocus': True})
        }


class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug')
    prepopulated_fields = {'slug': ('name',)}


admin.site.register(Category, CategoryAdmin)


class PostAdmin(admin.ModelAdmin):
    form = PostForm
    list_display = ['title', 'slug', 'date_posted', 'author']
    list_filter = ['title', 'date_posted']

    prepopulated_fields = {'slug': ('title',)}


admin.site.register(Post, PostAdmin)

1 个答案:

答案 0 :(得分:0)

您需要在模型中覆盖__str__方法,以处理要在管理员身上显示的内容。

class Category(models.Model):
    name = models.CharField(max_length=150)
    slug = models.SlugField(max_length=150)

    class Meta:
        ordering = ('name',)
        verbose_name = 'catergory'
        verbose_name_plural = 'catergories'

    def __str__(self):
        return self.name