【问题标题】:Custom Admin View and User Restriction自定义管理员视图和用户限制
【发布时间】:2015-10-07 14:01:49
【问题描述】:

我想在 django admin 中创建一个自定义视图,以反映另一个模型的更改表单。我已经创建了一个自定义模型管理类,不知道从哪里开始。我找不到任何关于如何创建自定义管理视图的 Django 1.8 好的示例。

Django 版本:1.8

class CustomerProductOrderAdmin(admin.ModelAdmin):

    review_template = 'admin/onlineordering/order_template.html'

    def get_urls(self):

        urls = super(CustomerProductOrderAdmin, self).get_urls()
        my_urls = patterns('',
            (r'\d+/customer_template/$', self.admin_site.admin_view(self.customer_template)),
        )
        return my_urls + urls

    def customer_template(self, request, id):

        product_orders = CustomerProductOrder.objects.get(pk=id)

        return render_to_response(self.review_template, {
            'quantity': 'Quantity: %s' % product_orders.quantity,
        }, context_instance=RequestContext(request))

我有一个属于该用户表的客户表。

class Customer(models.Model):
    customer = models.ForeignKey(settings.AUTH_USER_MODEL, limit_choices_to={'groups__name': "customers"})

/app/model/1 #pk = customer.id

自定义表单将具有此 URL

/app/customform/

当登录的用户转到 /app/customform 时,他们不应该看到来自 /app/model/1 的更改表单。他们不应该看到其他用户更改表单。另外,我想限制对自定义表单的访问,仅限于特定的用户组。即这个组看不到 /app/model/ 但可以看到 /app/customform。

【问题讨论】:

    标签: django-admin


    【解决方案1】:

    如何将独立模板添加到管理页面的示例

    在model类里面的model.py文件中添加一个函数

    def version_summery(self, ):
        batch_d= {}
        fy = {}
    
        for br in self.batchresult_set.all():
            batch_d[br.name.strip()] =  br.__dict__
    
        fy['batch_d'] = batch_d.values()
        x = render_to_string('admin/results/result_build_summary.html', fy)
    
        return x
    

    确保 urls.py 知道如何找到模板“result_build_summary.html”

    在 admin.py 中

    readonly_fields = ( 'version_summery',)
    
    fieldsets = (
            ('', {
                'fields': ( 'version_summery', ),
            }),
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 2012-08-24
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 2013-06-26
      相关资源
      最近更新 更多