Question

Is it possible to include model form template in django admin as follows?

models.py

class Customer(models.Model):
     name = models.CharField(max_length=20)
     designation = models.CharField(max_length=20)
     gender = models.BooleanField()

forms.py

class CustomerForm(forms.ModelForm)
    gender = forms.TypedChoiceField(
            choices=GENDER_CHOICES, widget=forms.RadioSelect(renderer=HorizontalRadioRenderer), coerce=int, )
    class Meta:
        model = Customer

template.html

<form action="{% url 'verinc.views.customerView' %}" method="POST">{% csrf_token %}
{{ form.as_p }} 
    <input id="submit" type="button" value="Click" /></form>

views.py

def customerView(request):
    if request.method == 'POST':
        form = CustomerForm(request.POST)
    else:
        form = CustomerForm()
return render_to_response('myapp/template.html', {'form' : form,})

admin.py

class CustomerInline(admin.StackedInline)
    model= Customer
    form = CustomerForm
    template = 'myapp/template.html

When I view the form in url (localhost/myapp/customer) it displays all the fields correctly. But when I view it in admin page it displays only the submit button in the block. My requirement is to view the form using templates in admin page, so that i could use some AJAX script for further process. Any help is most appreciated.

Was it helpful?

Solution

Well , Its not possible . But you can implement like this :

You should create file called admin_views.py in your app customer.

Then add url in your urls.py like

(r'^admin/customer/customerView/$', 'myapp.customer.admin_views.customerView'),

Write your view implementation inside admin_views.py like :

from myapp.customer.models import Customer
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.contrib.admin.views.decorators import staff_member_required


def customerView(request):
    return render_to_response(
        "admin/customer/template.html",
        {'custom_context' : {}},
        RequestContext(request, {}),
    )
customerView = staff_member_required(customerView)

And inside your admin template extend base_site.html like this one :

{% extends "admin/base_site.html" %}

{% block title %}Custmer admin view{% endblock %}

{% block content %}
<div id="content-main">
     your content from context or static / dynamic...
</div>
{% endblock %}

Thats it . hit that new url after admin login . Note Not Tested :) .

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top