Прежде всего, вы должны связать свою модель викторины с вашими моделями Choice, Answer и Quiz_Ressource.
class Quiz (models.Model):
name = models.TextField(max_length=50)
problem_desc = models.TextField (blank=True)
problem_has_resource = models.BoolField ()
problem_is_choice = models.BooleanField ()
choices=models.ManyToManyField(Choice)
answers=models.ManyToManyField(Answer)
ressources=models.ManyToManyField(Quiz_Ressource)
Таким образом, вы сообщаете Django, что ваша модель Quiz ссылается на несколько моделей типа Choice, Answer и Quiz_Ressource. Вы можете искать концепцию ManyToMany в реляционных базах данных, если это неясно.
После того, как вы переписали свою модель таким образом, на страницах администратора появятся поля для добавления и выбора вариантов, ответов и ресурсов.
Чтобы продолжить работу с django, используйте документацию, приведенную здесь: https://docs.djangoproject.com/en/1.3/topics/db/models/#many-to-many-relationships
Ваши потребности в пользовательских шаблонах администратора - это отдельная история. Вы можете сделать это с помощью чего-то подобного в своих приложениях admin.py:
from django.contrib import admin
from django.contrib.admin.sites import AdminSite
from yourapp.models import Quiz
class QuizAdminSite(AdminSite):
def admin_quiz(request):
#here goes your custom admin view code, where you can do
#if has_ressource: return render_to_response('admin/quiz/has_ressource.html')
#elif is_choice: return render_to_response('admin/quiz/is_choice.html')
#and so on, you have to work out yourself how this has to look exactly
return HttpResponse('your custom admin view')
def get_urls(self):
from django.conf.urls.defaults import *
urls = super(ItemAdmin, self).get_urls()
my_urls = patterns('',
url(
r'update_feeds',
self.admin_site.admin_view(self.admin_quiz),
name='admin_quiz',
),
)
return my_urls + urls
class QuizAdmin(QuizAdminSite):
model=Quiz
admin.site.register(Quiz,QuizAdmin)
Я не знаю точно, что вы хотите сделать с вашим пользовательским видом администратора, поэтому я пропустил эту часть. Но это должен быть путь для подражания.