在Django Admin中显示子界面的父级

1 投票
1 回答
895 浏览
提问于 2025-04-17 21:32

我刚开始学习Python Django,我们决定用这个框架来开发一个应用。在开发管理后台的时候遇到了一些问题,这里有一段我的代码,模型大概是这样的:

class Category(models.Model):
   name = models.CharField(max_length=60)
   description = models.CharField(max_length=100)

class Product(models.Model):
   name = models.CharField(max_length=60)
   description = models.CharField(max_length=100)
   category = models.ForeignKey(Category)

在数据库中,相应的表里,产品表(Product)有一个外键指向分类表(Category),这个外键叫category_id。

在admin.py文件里,我写了:

 class ProductAdmin(admin.ModelAdmin):
    fields = ['name','description'];

 class CategoryAdmin(admin.ModelAdmin):
     fieldsets = [
             (None,{'fields':['name']}),
             ('Description',{'fields' : ['description']})
             ]
   inlines = [ProductInline] 

当我想通过Django的管理面板往数据库里插入一个产品时,发现没有可以选择分类的字段,并且收到了以下信息:

"Column 'category_id' cannot be null"

我哪里出错了?我该如何修改我的代码,让管理面板里能提供一个下拉框或者其他方式来选择它的父级(在这个例子里就是分类)呢?

1 个回答

3

把你在ProductAdmin里用的“fields”选项去掉。你可能把“fields”和“list_display”搞混了?试试这个:

class ProductAdmin(admin.ModelAdmin):
    list_display = ['name','description']

撰写回答