【问题标题】:Add inline model to django admin site将内联模型添加到 django 管理站点
【发布时间】:2016-02-18 07:11:49
【问题描述】:

我有这两个模型:

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 shell 中,我可以进行类似的查询

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

肯定有一些明显的东西,但我就是想不通。

【问题讨论】:

    标签: python django foreign-keys django-admin


    【解决方案1】:

    做这样的事情:

    class ChannelAdmin(admin.TabularInline):
        model = Channel
    
    class RuleAdmin(admin.ModelAdmin):
       inlines = [ChannelAdmin,]
    
    admin.site.register(Rule,RuleAdmin)
    

    【讨论】:

      【解决方案2】:
      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)
        
        

        点击这个: result

        【讨论】:

          猜你喜欢
          • 2012-10-12
          • 2014-08-20
          • 2016-03-08
          • 2015-01-22
          • 1970-01-01
          • 1970-01-01
          • 2010-12-29
          • 1970-01-01
          • 2023-03-25
          相关资源
          最近更新 更多