管理站点上的自定义视图

时间:2016-12-12 07:46:57

标签: python django django-admin

我想在模型管理员上有自定义视图。

当前行为:

当我点击模型对象(1)时,我需要site/app_label/1/change, 这导致使用其内联编辑对象。

我想要实现的目标:

当我点击一个对象应该重定向到site/app_label/1时,它应该显示其内联的列表视图(不是可编辑的列表)我将放置一个单独的按钮,这将导致site/app_label/1/change

我希望这个列表视图类似于Django默认样式列表。

我的两个模特是:

class RunConfig(models.Model):
    config_name = models.CharField(max_length=100,blank=False,null=False, unique=True )


class Jobs(models.Model):
    config_name     = models.ForeignKey('RunConfig',on_delete=models.CASCADE,)
    job_name        = models.TextField(blank=True,null=True, )
    parameters      = models.TextField(blank=True,null=True, )
    exec_order      = models.IntegerField(help_text="Execution Order")

admin.py

class JobsInline(SortableInlineAdminMixin, admin.TabularInline):
    model = Jobs
    extra = 1


class RunConfigAdmin(admin.ModelAdmin):
        list_display  = ('config_name',)

到目前为止我一直在尝试:

我的计划是覆盖更改列表模板,但这不起作用,因为它开始抱怨找不到app_list的反向匹配

admin.py中的

添加了自定义网址

def get_urls(self):
        urls = super(RunConfigAdmin, self).get_urls()
        my_urls = [

            url(r'^(?P<pk>[0-9]+)/$',  self.admin_site.admin_view(RunConfigDetailView.as_view(), cacheable=True), name='rc-detail'),
        ]
        return my_urls + urls

创建了一个关于views.py的详细视图我希望使用context['job']来实现结果会更容易但是我失败了:(

class RunConfigDetailView(LoginRequiredMixin,DetailView):
    model = RunConfig
    context_object_name = 'rc_detail'


    def get_context_data(self,**kwargs):
        context = super(RunConfigDetailView, self).get_context_data(**kwargs)
        context['opts']  = self.model._meta
        context['jobs'] = Jobs.objects.filter(config_name=self.object.id)

        return context

0 个答案:

没有答案