Django 外键在管理仪表板中选择

GCi*_*ien 1 django django-models django-admin wagtail django-1.11

不太确定如何实现这一点。

我有一个 Post 模型,它引用了 Category 模型的外键。

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"
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作得很好,除了管理仪表板中的这一点:

在此输入图像描述

谁能给我专业提示来避免这种情况......?这可能是 Django 管理手册的第 1 行,但我一辈子都找不到第 1 行!:D

浏览了 Django 1.11 管理文档中的模型、外键字段、管理等,但没有运气。

注意:如果有任何细微的差异,可能值得注意的是我使用的是鹡鸰

duk*_*ody 5

如果您同意在其他地方更改类别的表示:

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

否则,请使用Django admin-changeforeignKey 显示文本中描述的解决方案。