2015-07-17 17 views
8

Chcę utworzyć niestandardowy widok w administratorze django, który odzwierciedla formularz zmiany z innego modelu. Do tej pory tworzyłem niestandardową klasę adminów i nie wiem, dokąd się udać. Nie mogę znaleźć żadnych dobrych przykładów dla Django 1.8 na temat tworzenia niestandardowego widoku administratora.Niestandardowy widok administratora i ograniczenie użytkownika

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

Mam tabeli klientów, które należą do tej tabeli użytkownika.

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

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

Postać będzie miała zwyczaj ten adres

/app/CustomForm/

Gdy zalogowany użytkownik przechodzi do/app/customform, nie powinien widzieć formularza zmiany z/app/model/1. Nie powinni widzieć innych użytkowników, którzy zmieniają formularze. Chciałbym również ograniczyć dostęp do niestandardowego formularza do konkretnej grupy użytkowników. tzn. ta grupa nie może zobaczyć/app/model /, ale może zobaczyć/app/customform.

Odpowiedz

0

Przykładem jak dodać niezależną szablon do administratora strony

W pliku model.py wewnątrz klasy modelu dodać funkcję

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 

upewnij się, że urls.py wie jak znaleźć szablon 'result_build_summary.html'

aw admin.py

readonly_fields = ('version_summery',) 

fieldsets = (
     ('', { 
      'fields': ('version_summery',), 
     }), 
    ) 
Powiązane problemy