Django管理寄存器模型,用于多个具有额外字段和inheritan的关系

2024-04-25 23:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,所以我最近开始使用Django(和Python),所以我是一个假人。在

以下是我的模型(以下所有内容都在同一个应用程序中):

class Menulizable(models.Model):
    pass

class Category(Menulizable):
    slug = models.SlugField(max_length=155)
    name = models.CharField(max_length=155)
    short_description = models.TextField(null=True, blank=True)
    ...
    def __str__(self):
        return self.name

class Article(Menulizable):
    slug = models.SlugField(max_length=150)
    title = models.CharField(max_length=155)
    content = models.TextField(null=True)
    ...
    def __str__(self):
        return self.title

class News(Article):
    author = models.ForeignKey(to=User, related_name="written_news")
    ...

class Page(Article):
    author = models.ForeignKey(to=User, related_name="pages")
    ...

class Menu(models.Model):
    slug = models.SlugField(max_length=155)
    name = models.CharField(max_length=155)
    items = models.ManyToManyField(Menulizable, related_name='in_lists', through='MenuOrder')
    ...

class MenuOrder(models.Model):
    position = models.PositiveIntegerField()
    gl = models.ForeignKey(Menu)
    gi = models.ForeignKey(Menulizable, related_name="menu_orders")
    ...

我的目标是(在管理面板/管理)管理菜单,我们可以在其中存储一组有序的对象,这些对象可以是Category、News或Page或其他对象(来自Menulizable的子类)。在

我的管理员:

^{pr2}$

请注意,这似乎可以很好地工作,这允许管理菜单,我们可以在其中设置可菜单化对象的有序列表。在

问题是:

The str shown is the one of Menulizable instances and not the one of its child

我希望它出现在这个列表中,至少是文章、类别实例的str,而不是可菜单化的伪抽象实例的str。在

有人要帮忙吗?我明白了还是一团糟?在

谢谢:)


Tags: 对象nameselfmodelmodelslengthmaxclass

热门问题