2017-11-09 4 views
0

나는 다음과 같은 모델이 (클릭 필드 및 표시 필드) 동적 형성 만들려면 :장고 내 장고 프로젝트에서

models.py 제목에서 떨어져

class Paper(models.Model): 
    title = models.CharField(max_length=500) 
    description = models.CharField(max_length=1500) 
    chapter_1 = models.CharField(max_length=50, default='Intro') 
    chapter_1_status = models.CharField(max_length=3, choices=[('On','On'), ('Off','Off')], blank=True, null=True) 
    chapter_1_description = models.CharField(max_length=1500) 
    chapter_1_word_count = models.IntegerField() 
    chapter_1_reading_time = models.DurationField(blank=True, null=True) 
    chapter_2 = models.CharField(max_length=50, default='Hypothesis') 
    chapter_2_status = models.CharField(max_length=3, choices=[('On','On'), ('Off','Off')], blank=True, null=True) 
    chapter_2_description = models.CharField(max_length=1500) 
    chapter_2_word_count = models.IntegerField() 
    chapter_2_reading_time = models.DurationField(blank=True, null=True) 

당신이 볼 수 있듯이, 그리고 설명 다른 모든 필드는 반복됩니다 (1 장, 2 장, 3 장, 9 장까지 할당 된 용지의 최대 값).

필드 상태를 사용하여 해당 장이 실제로 종이에 포함되는지 여부를 확인합니다. 다른 사람이 뽑으면 장에 장이 보이지 않습니다.

은 이제 더 진보 된 무언가로이 개념을 번역해야합니다 : 대신에이 모델에 대한 일반 장고 형태를 갖는, 나는 사용자가 볼 형태 싶은 :

  1. 제목
  2. 설명을
  3. 사용할 수있는 장 (소개, 가설 ...) 목록과 특정 장을 클릭하면 해당 장과 관련된 모든 필드가 포함됩니다. 선택한 또는 클릭하지 않는 모든 장은 상태가 꺼짐 인 것처럼 처리해야하므로 표시해서는 안됩니다.

는 지금, 내 forms.py은 다음과 같습니다

class PaperFormClass(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(PaperFormClass, self).__init__(*args, **kwargs) 
     for field in iter(self.fields): 
      self.fields[field].widget.attrs.update({ 
       'class': 'form-control form-control-lg' 
     }) 

    class Meta: 
     model = Paper 
     fields = '__all__' 

class PaperForm(forms.ModelForm): 

    class Meta: 
     model = Paper 
     fields = '__all__' 

가 어떻게 대신 모델의 모든 필드를 표시하는 단지 제목, 설명 및 모든의 클릭 가능한 목록을 표시하는 양식을 달성 할 수 종이에 포함될 수있는 장? 하나의 챕터를 클릭하면 해당 챕터와 관련된 다른 필드가 나타나고 편집 가능해야합니다.

미리 제안 해 주셔서 감사합니다.

답변

0

나는 Chapter

class Chapter(models.Model): 
    paper = models.ForeignKey(Paper, related_name="chapters") 
    chapter = models.CharField(max_length=2, default='1', choices=[(i, i) for i in range(1,10)]) 
    status = models.CharField(max_length=3, choices=[('On','On'), ('Off','Off')], blank=True, null=True) 
    description = models.CharField(max_length=1500) 
    word_count = models.IntegerField() 
    reading_time = models.DurationField(blank=True, null=True) 

그런 다음 인라인

+0

안녕 @itzMEonTV 감사 답변에 대한 많은으로 inline 쇼 확인 다른 모델을 만드는 건의 할 것입니다. 나는 링크 된 문서를 읽었으며 조금 혼란 스러웠다. (나는 장고에 대해 매우 익숙하다.) 내가 아는 한, 인라인 프로세스를 실제로 이해할 수 있도록 읽을 수있는 다른 예제가 있습니까? – Giulia

관련 문제