2012-01-29 3 views
0

저는 django를 사용하여 퀴즈 엔진을 설계하고 있습니다. 퀴즈가해야 할 수도 있습니다Dynamic Django Model Control

class Quiz (models.Model): 
    quiz_id = models.AutoField (primary_key=True) 
    problem_desc = models.TextField (blank=True) 
    problem_has_resource = models.BoolField() 
    problem_is_choice = models.BooleanField() 
    def __unicode__ (self): 
     return self.quiz_id 

class Choice (models.Model): 
    choice_id = models.AutoField (primary_key=True) 
    quiz_id = models.ForeignKey (Quiz); 
    choice_desc = models.CharField (max_length = 500) 
    is_answer = models.BooleanField() 

class Answer (models.Model): 
    quiz_id = models.ForeignKey (Quiz) 
    input_answer = models.FloatField() 

class Quiz_Resource (models.Model): 
    quiz_id = models.ForeignKey (Quiz) 
    title = form.CharField (max_length = 50) 
    file = forms.FileField() 
    def __unicode__ (self): 
     return self.file.name 

는 "응답"을 입력 또는 선택을 선택하는 다음 models.py에서 , 나는 같은 클래스가 있습니다. 퀴즈에는 다양한 선택이있을 수 있습니다. 퀴즈에 추가 리소스가있을 수 있습니다. 나는 boolfield가 관리자 페이지 스타일을 제어하고 공식 정보를 설정하기를 원합니다. 그것을 어떻게 성취 할 수 있습니까?

활, 고마워!

여기에 코드를 모두

답변

1

먼저 입력, 당신은 당신의 선택, 응답 및 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) 

당신이 장고에게 그런 식으로 타입 선택, 응답 및 Quiz_Ressource의 여러 모델로 퀴즈 모델 참조. 관계형 데이터베이스에서 ManyToMany의 개념을 검색 할 수 있습니다 (명확하지 않은 경우).

이렇게 모델을 다시 작성하면 관리 페이지에서 선택 사항, anwers 및 ressources를 추가하고 선택하는 필드가 있습니다. 장고는 설명서를 사용하여 여기에 규정 된

는 함께 계속하려면 사용자 지정 관리 템플릿 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) 

난 당신이 사용자 정의 관리보기로 뭘 원하는지 정확히 모르는, 그래서 내가 그 부분을 건너 뛰었습니다. 하지만 그 길을 따라야합니다.

+0

감사합니다. 이제 관리자 페이지로 작업 할 특별한 웹 페이지를 디자인하고 싶습니다. –

관련 문제