Я не вижу администратора списка категорий, как это исправить - PullRequest
0 голосов
/ 05 июня 2019

Я зарегистрировал категорию администратора в models.py. Я добавил эту модель в модель Post через ForenKey. Но когда я захожу в консоль администратора, я не вижу свои категории, я просто вижу объект категории (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 голосов
/ 05 июня 2019

Вам необходимо переопределить метод __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
...