在Django管理站点中添加内联模型

21 投票
4 回答
36469 浏览
提问于 2025-05-10 10:04

我有这两个模型:

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界面中能够给规则添加频道。所以我创建了这两个管理模型:

class ChannelAdmin(admin.TabularInline):
    model = Channel

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

但是当我启动服务器时,我遇到了这些错误:

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

在django的命令行界面中,我可以进行这样的查询:

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

肯定有什么明显的问题,但我就是搞不清楚。

相关文章:

  • 暂无相关问题
暂无标签

4 个回答

0

2022年3月更新:

这个方法是有效的:

from django.contrib import admin
from .models import Channel, Rule

class ChannelInline(admin.TabularInline):
    model = Channel

@admin.register(Rule)
class RuleAdmin(admin.ModelAdmin):
    inlines = [ChannelInline]
1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或者库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有些错误信息可能不太容易理解,这时候我们就需要查找一些资料或者向别人请教。

在StackOverflow上,很多人会分享他们遇到的问题和解决方案。这里的讨论通常会涉及到一些代码示例,帮助大家更好地理解如何解决类似的问题。通过这些交流,我们可以学到很多实用的技巧和经验。

总之,编程的学习过程就是不断地解决问题和积累经验的过程。遇到困难时,不要气馁,积极寻找答案,和其他人交流,慢慢你就会变得更加熟练。

class OrderItemInline(admin.TabularInline):
    model = OrderItem
    fields = ['image']    

class OrderAdmin(admin.ModelAdmin):
    list_display = ['id']
    list_filter = ['status']
    inlines = [OrderItemInline]
3

在admin.py中添加

from .models import Post, Comment

class CommentInline(admin.StackedInline):
    model = Comment
    extra = 0

class PostAdmin(admin.ModelAdmin):
    inlines = [
        CommentInline,
    ]

admin.site.register(Post, PostAdmin)

点击这个:

结果

36

可以这样做:

class ChannelAdmin(admin.TabularInline):
    model = Channel

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

admin.site.register(Rule,RuleAdmin)

撰写回答