DjangoPolymentree列表\u显示内容字段中的对象名称

2024-07-03 06:19:15 发布

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

我想在django管理站点上显示我的对象名,但是我使用的是django多态树,我的对象名应该是这个对象内容中的一个文本,我怎么做?你知道吗

我已经试过了 __结构() 在多态树子类中,这不起作用,因为django多态树在管理员.py没有别的了。你知道吗

这是我生活的一部分型号.py你知道吗

class UserTimelines(PolymorphicMPTTModel):
    parent = PolymorphicTreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.CASCADE)

    to_show = ''

    class Meta(PolymorphicMPTTModel.Meta):
        verbose_name = "User Timeline"
        verbose_name_plural = "User Timelines"

class Node(UserTimelines):
    node_title = models.CharField(max_length=20, null=True)

    to_show = str(node_title)

    class Meta:
        verbose_name = "Node"
        verbose_name_plural = "Nodes"

class CategoryNode(UserTimelines):
    category_username = models.CharField(max_length=25, null=True)


    to_show = str(category_username) + ' timeline'

    class Meta:
        verbose_name = "Category node"
        verbose_name_plural = "Category nodes"

和一部分管理员.py你知道吗

class BaseChildAdmin(PolymorphicMPTTChildModelAdmin):
    GENERAL_FIELDSET = ( None, {
        'fields' : ('parent',),
    })

    base_model = UserTimelines
    base_fieldsets = (
        GENERAL_FIELDSET,
    )


class TreeNodeParentAdmin(PolymorphicMPTTParentModelAdmin):
    base_model = UserTimelines
    child_models = (
        (Node),
        (CategoryNode),
    )

    list_display = ('to_show', 'actions_column',)

    class Media:
        css = {
            'all' : ('admin/treenode/admin.css',)
        }

admin.site.register((Node, CategoryNode),BaseChildAdmin)
admin.site.register(UserTimelines, TreeNodeParentAdmin)

总结一下,我只想将Node或CategoryNode类中的“to\u show”变量添加到list\u display。你知道吗


Tags: to对象djangonamenodetrueverboseadmin
1条回答
网友
1楼 · 发布于 2024-07-03 06:19:15

过了几天,我就解决了这个问题。总之很简单,你必须这样做:

你知道吗型号.py地址:

class UserTimelines(PolymorphicMPTTModel):
    parent = PolymorphicTreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.CASCADE)

    class Meta(PolymorphicMPTTModel.Meta):
        verbose_name = "User Timeline"
        verbose_name_plural = "User Timelines"

class Node(UserTimelines):
    node_title = models.CharField(max_length=20, null=True)

    def __str__(self):
        return str(self.node_title)

    class Meta:
        verbose_name = "Node"
        verbose_name_plural = "Nodes"

class CategoryNode(UserTimelines):
    category_username = models.CharField(max_length=25, null=True)

    def __str__(self):
        return str(self.category_username) + ' timetable'

    class Meta:
        verbose_name = "Category node"
        verbose_name_plural = "Category nodes"

你知道吗管理员.py地址:

class BaseChildAdmin(PolymorphicMPTTChildModelAdmin):
    GENERAL_FIELDSET = ( None, {
        'fields' : ('parent',),
    })

    base_model = UserTimelines
    base_fieldsets = (
        GENERAL_FIELDSET,
    )


class TreeNodeParentAdmin(PolymorphicMPTTParentModelAdmin):
    base_model = UserTimelines
    child_models = (
        (Node),
        (CategoryNode),
    )

    list_display = ('_show', 'actions_column',)

    def _show(self, obj):
        return str(UserTimelines.objects.get(pk=obj.pk).__str__())

    class Media:
    css = {
        'all' : ('admin/treenode/admin.css',)
    }

admin.site.register((Node, CategoryNode),BaseChildAdmin)
admin.site.register(UserTimelines, TreeNodeParentAdmin)

我认为这个解决方案可以在将来帮助别人,所以你来了。你知道吗

相关问题 更多 >