2017-09-24 64 views
0

我有一個特定的場景,我無法弄清楚如何解決這個問題,一些方向將是很大的幫助:Django的 - 管理形成數據生成同場不屬於模型

我有一個模型:

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