2015-07-17 18 views
8

Voglio creare una vista personalizzata in admin django che rispecchia un modulo di modifica da un altro modello. Ho ottenuto fino alla creazione di una classe di amministrazione del modello personalizzato, e non so da dove andare. Non riesco a trovare alcun buon esempio per Django 1.8 su come creare una visualizzazione amministrativa personalizzata.Custom Admin View e User Restriction

Django Versione: 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)) 

Ho una tabella dei clienti che appartengono a questa tabella utente.

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

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

il modulo personalizzato avrà questo URL

/app/customform/

Quando l'utente che ha effettuato l'accesso va su/app/customform, non dovrebbe vedere il modulo di modifica da/app/model/1. Non dovrebbero vedere altri utenti cambiare moduli. Inoltre, vorrei limitare l'accesso al modulo personalizzato, a un particolare gruppo di utenti. cioè questo gruppo non può vedere/app/model/ma può vedere/app/customform.

risposta

0

Un esempio per come aggiungere un modello indipendente di amministrazione pagina

Al file di model.py all'interno della classe del modello aggiungere una funzione

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 

assicurarsi che l'urls.py sa trovare il modello 'result_build_summary.html'

e nel admin.py

readonly_fields = ('version_summery',) 

fieldsets = (
     ('', { 
      'fields': ('version_summery',), 
     }), 
    ) 
Problemi correlati