将内联模型添加到Django管理站点 [英] Add inline model to django admin site

查看:68
本文介绍了将内联模型添加到Django管理站点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这两个模型:

class Rule(models.Model):
    name = models.CharField(max_length=200)

class Channel(models.Model):

    id = models.CharField(max_length=9, primary_key=True)
    name = models.CharField(max_length=100)
    rule = models.ForeignKey(Rule, related_name='channels', blank=True)

而且我必须能够在RuleAdmin界面内的管理站点中添加规则到规则。所以我创建了这两个管理模型:

And I have to be able to add channels to rule in admin site within RuleAdmin interface. So I created these two admin models:

class ChannelAdmin(admin.TabularInline):
    model = Channel

class RuleAdmin(admin.ModelAdmin):
    model = Rule
    inlines = [ChannelAdmin]

但是,当我启动服务器时,出现以下错误:

But when I start my server I got this errors:

ERRORS:
<class 'main.admin.ChannelAdmin'>: (admin.E202) 'main.Channel' has no ForeignKey to 'main.Channel'.

仍然在django shell中,我可以进行查询,例如

Still in django shell I can make queries like

rule = Rule.objects.get(pk=1)
rule.channels.all()

必须有一些明显的东西,但我无法弄清楚。

There is got to be something obvious but I just can't figure it out.

推荐答案

执行以下操作:

class ChannelAdmin(admin.TabularInline):
    model = Channel

class RuleAdmin(admin.ModelAdmin):
   inlines = [ChannelAdmin,]

admin.site.register(Rule,RuleAdmin)

这篇关于将内联模型添加到Django管理站点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆