2017-09-24 9 views
0

모델에없는 필드 데이터 생성을 형성하고 나는이 문제에 접근하는 방법을 알아낼 수 없습니다입니다 :장고, 어떤 방향이 큰 도움이 될 것입니다 관리자 나 특정 시나리오를

class RollNumber(models.Model): 
    r_no_prefix = models.CharField(max_length=10, verbose_name='Roll number 
             suffix') 
    r_no= models.IntegerField(verbose_name='Number') 
    r_no_suffix = models.CharField(max_length=10, verbose_name='Roll number 
             prefix') 

    def __unicode__(self): 
     return '%s -%s-%s' % (self.r_no_prefix,self.r_no,self.r_no_suffix) 

아니, 나는 위의 모델 필드 중 하나를 가지고 있지 않은 형태로 다음과 같은 입력에 사용자 요청에 의해 대량으로 이러한 롤 번호를 생성합니다.

Number of roll numbers you want to generate: ____________ 
Roll number prefix: ________________ 
Roll number suffix: ________________ 

[SUBMIT][CANCEL] 
  1. 위의 양식의 제출 rollnumbers의 수를 생성하고 대량으로 RollNumber 테이블에서 레코드를 만들 수 있어야합니다.
  2. 이 양식을 다시 사용하려고하면 마지막 번호를 얻은 다음 거기에서 시퀀스를 시작해야합니다. 해당 사용자가 일부 롤 번호 레코드를 삭제했을 수 있음을 고려하십시오.

답변

0

모델 양식을 사용하지 마십시오. 간단한 양식을 사용하고 루프에서 개체를 만듭니다. 다음과 같은 내용 :

from django import forms 
from models import RollNumber 

class RollForm(forms.Form): 
    times_to_roll = forms.IntegerField() 
    prefix = forms.IntegerField() 
    suffix = forms.IntegerField() 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     rolls = RollNumber.objects.all() 
     if not rolls.exists(): 
      return 
     last_roll = rolls.order_by('pk')[-1] 
     self.fields['prefix'].initial = last_roll.prefix 
     self.fields['suffix'].initial = last_roll.suffix 

    def is_valid(self, *args, **kwargs): 
     if not super(RollForm, self).is_valid(*args, **kwargs): 
      return False 
     for x in range(self.cleaned_data.times_to_roll): 
      RollNumber.objects.create(...) 
     return True