Выбор внешнего ключа Django на панели администратора

Не совсем уверен, как это сделать.

У меня есть модель Post, которая ссылается на внешний ключ на модель категории.

class Post(models.Model):

    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),
    )

    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='feature_posts')
    body = models.TextField("Body")
    lead_in = models.CharField("Lead In", max_length=500, default='', blank=True)
    is_featured = models.BooleanField("Is Featured?", default=False)
    likes = models.IntegerField(default=0, blank=True)
    views = models.IntegerField(default=0, blank=True)
    category = models.ForeignKey('Category', null=True, blank=True)

class Category(models.Model):

    name = models.CharField(max_length=200)
    slug = models.SlugField()
    parent = models.ForeignKey('self',blank=True, null=True ,related_name='children')

    class Meta:
        unique_together = ('slug', 'parent',)
        verbose_name_plural = "categories"

Все работает как задумано довольно хорошо, за исключением этого в панели администратора:

введите здесь описание изображения

Может ли кто-нибудь дать мне совет, чтобы избежать этого ...? Вероятно, это строка 1 руководства администратора Django, но я не могу найти строку 1! :D

Просмотрел административную документацию Django 1.11 в моделях, полях внешнего ключа, администраторе и т. д., но безрезультатно.

Примечание. Возможно, стоит отметить, что я использую трясогузку, если есть какие-то тонкие различия


person GCien    schedule 29.01.2018    source источник


Ответы (1)


Если вы согласны с изменением представления категории в других местах:

class Category(models.Model):
    # ...
    def __str__(self):  # what will be displayed in the admin
        return self.name

В противном случае используйте решение, описанное в разделе Администратор Django — изменение отображаемого текста ForeignKey.

person dukebody    schedule 29.01.2018
comment
Работает как угощение. Я видел, как использовалась эта функция __str__(self), но был уверен, что это применимо только к самой модели в админке. Учиться на этом было идеально! Спасибо. - person GCien; 30.01.2018