2017-04-26 5 views
0

Ich habe ein Modell namens Category, die rekursiv ist. Das Modell so geht:Rekursives Modell im Admin Seite hinzufügen

from django.db import models 

class Category(models.Model): 
    name = models.CharField(max_length=255, blank=False) 
    description = models.CharField(max_length=255, blank=False) 
    sub_category = models.ForeignKey('self', blank=True, null=True, related_name='subcategory') 

    def __str__(self): 
     return self.name 

mein admin.py für category ist:

from django.contrib import admin 
from category.models import Category 
from django import forms 

class CategoryAdmin(admin.ModelAdmin): 
    list_display = ['id', "name", "sub_category", 'description'] 
    list_filter = ["name"] 
    search_fields = ["name"] 
    ordering = ('sub_category',) 

    class Meta: 
     model = Category 

admin.site.register(Category, CategoryAdmin) 

Als ich in die Datenbank mehr Kategorien hinzufügen möchten, ich auf den Admin-Bereich gehen und es tun jedoch, Angenommen, ich muss unterscheiden, welche Kategorie ein Teil der übergeordneten Kategorie ist, wie würde ich das tun? gerade jetzt, sehe ich: enter image description here

was nicht ganz hilfreich ist, gibt es eine Möglichkeit, vielleicht die Elternkategorie neben der Unterkategorie? wie dieses Format:

  • [Java] Tutorials
  • [Python] Tutorials

Antwort

0

ich mit diesem wirklich dumm war, war die Antwort wirklich einfach, im Grunde hatte ich nur die __str__ bearbeiten Methode im Modell ...

def __str__(self): 
    if self.sub_category != None: 
     return '[{0}] {1}'.format(self.sub_category.name, self.name) 
    return self.name 
+0

Nur ein Rat: Besser (immer) verwenden 'self_category ist nicht keine'. –

+0

was genau ist der Unterschied zwischen '! =' Und 'ist nicht '. Ist es nur '! =' Basiert auf Wert und basiert nicht auf Typ? – Zer0

+0

Dies ist ein [exzellentes Video] (https://www.youtube.com/watch?v=CZ8bZPqtwU0) von Dan Bader, um den Unterschied zu sehen :). Kurz gesagt, was Sie sagen, tippen und nicht Wert. –

Verwandte Themen