2017-04-26 78 views
0

我有一个名为Category的模型,它是递归的。该模型是这样的:管理员中的递归模型添加页面

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 

我对category admin.py是:

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) 

当我想更多类别添加到数据库中,我去管理部分,但做到这一点,假设我需要区分哪个类别是其父类别的一部分,我将如何去做这件事?现在,我看到: enter image description here

这是不是很有帮助,有没有办法也许有父类别旁边的子类别?类似这样的格式:

  • 【JAVA]教程
  • [python]的教程

回答

0

我真的很愚蠢的这一个,答案是非常简单的,基本上,我不得不编辑__str__方法...

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

只是一个建议:更好(总是)使用'self.sub_category不是None'。 –

+0

'!='和'不是'之间的区别究竟是什么。它只是'!='是基于值而不是基于Type? – Zer0

+0

这是丹巴德看到的区别:) [优秀视频](https://www.youtube.com/watch?v=CZ8bZPqtwU0)。简而言之,就是你所说的,输入而不是价值。 –