2013-08-14 2 views
2

나는 django에 퀴즈 응용 프로그램을 만들고 있습니다. 각 질문은 단 하나의 대답을 가질 수장고 관리자의 라디오 버튼

 

    class Quiz(models.Model): 
     title = models.CharField(max_length=200) 
     description = models.TextField() 
     publish = models.BooleanField(default=False) 

     def __unicode__(self): 
      return self.title 

    class Question(models.Model): 
     quiz = models.ForeignKey(Quiz) 
     question = models.TextField() 
     hint = models.TextField() 

     def __unicode__(self): 
      return self.question 

    class Option(models.Model): 
     question = models.ForeignKey(Question) 
     option = models.CharField(max_length=250) 
     correct = models.BooleanField(default=False) 

     def __unicode__(self): 
      return self.title 

: 여기에 모델입니다. 문제가 어디에서 오는이입니다. 나는 각 질문에 대한 옵션에 대한 모델 등이 을 관리자 양식을 작성하는 방법을 알아낼 수 없었다, 옵션의 하나에 해당 = 올바른 할 수 있습니다.

나는 각 질문에 대한 라디오 버튼을 사용할 수 있지만 하나 하나의 외래 키를 선택할 수 있습니다 그들은 제한하는 방법을 모르겠어요.

+0

장고의 어떤 버전을하다 "admin.py"파일을 볼 수 있습니까? 또한,'Option' 모델의'__unicode__' 메소드가 유효한 값을 반환하지 않습니다. – Nick

+1

[RadioSelect] (https://docs.djangoproject.com/en/)를 사용하십시오. dev/ref/forms/widgets/# radioselect). 정상적인 드롭 다운과 비슷하지만, 하나의 가치를 구하십시오. –

답변

1

는 그 정반대의 모습을 위로 할 수있는 방법을 모르겠어요.

나는 이것이 당신이 원하는 것을 정확히 아니지만, 거의 확실히 알고있다. 당신은 가서 내가 같은 질문을 이해 admin.py

admin.site.register(Quiz) 
#admin.site.register(Option) #Include this if required 

class OptionInline(admin.TabularInline): 
    model = Option 

@admin.register(Question) 
    class QuestionAdmin(admin.ModelAdmin): 
    inlines = [ 
     OptionInline, 
    ] 
1

이 시도 할 수 : 당신은 하나의 옵션 만 잘해야하기 때문에 코드를 변경하고 싶습니다. 왜 질문에이 줄을 추가하지 마십시오 : 이것처럼

right_answer = models.ForeignKey(Option) 

, 당신은 부울 correct을 할 필요가 없습니다. 귀하의도는 (당신이 방법 get_queryset() 오버라이드 (override) chooseable 있어야 할 옵션을 반환하는 사람들이에 관리자를 추가 할 수 있으며,이 매니저는 get_qeryset()에서이 라인이 있어야합니다.하지만, q.option_set.all() q는 질문이 (이 어떤 옵션을 사용하지 않으면 그것 또 다른 질문과 일치, 표시 할 수있다.)

나는 secont 부분이 일하는 것이 있는지 확실하지 해요 둘의 여부 좋은 방법,하지만 첫 번째 부분은 중요한 하나입니다.