मैं django-admin साइट पर अपने ऑब्जेक्ट का नाम दिखाना चाहता हूं, लेकिन मैं django-polymorphic-tree का उपयोग कर रहा हूं और मेरे ऑब्जेक्ट का नाम इस ऑब्जेक्ट की सामग्री से एक टेक्स्ट होना चाहिए, मैं इसे कैसे कर सकता हूं?

मैंने पहले से ही बहुरूपी वृक्ष उपवर्गों में __str __() की कोशिश की है, और यह काम नहीं कर रहा है क्योंकि django-polymorphic-tree admin.py में list_display का उपयोग कर रहा है और कुछ नहीं।

यह मेरे model.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"

और admin.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)

संक्षेप में मैं सिर्फ सूची_डिस्प्ले में जोड़ना चाहता हूं, मेरा 'to_show' चर नोड या श्रेणी नोड वर्ग से है।

1
Daniel Skadłubowicz 23 जुलाई 2019, 21:42

1 उत्तर

सबसे बढ़िया उत्तर

कुछ दिनों के बाद मैं इस समस्या का समाधान करता हूं। वैसे भी यह आसान है, आपको इस तरह sth करना होगा:

Model.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"

Admin.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)

मुझे लगता है कि यह समाधान भविष्य में किसी की मदद कर सकता है इसलिए आप यहां हैं।

0
Daniel Skadłubowicz 28 जुलाई 2019, 20:29