自定义管理员视图和用户限制

mad*_*php 8 django-admin

我想在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))
Run Code Online (Sandbox Code Playgroud)

我有一个属于此用户表的客户表.

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

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

自定义表单将具有此URL

/应用程序/ customform /

当登录用户转到/ app/customform时,他们不应该从/ app/model/1看到更改表单.他们不应该看到其他用户更改表单.此外,我想限制对特定用户组的访问.即该组无法查看/ app/model /但可以看到/ app/customform.

Oha*_*Lad 0

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

在模型类内的 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
Run Code Online (Sandbox Code Playgroud)

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

并在 admin.py 中

readonly_fields = ( 'version_summery',)

fieldsets = (
        ('', {
            'fields': ( 'version_summery', ),
        }),
    )
Run Code Online (Sandbox Code Playgroud)