2014-09-01 37 views
0

我有一個模型,並使用香草意見來創建創建,更新,詳細和刪除視圖。django香草查看錶單提交後設置字段

class Person(models.Model): 
    username = models.CharField(max_length=30, unique=True) 
    first_name = models.CharField(max_length=30) 
    middle_initial = models.CharField(max_length=3, null=True, blank=True) 
    last_name = models.CharField(max_length=30) 
    last_four_ssn = models.CharField(max_length="5") 
    ssn = models.CharField( max_length="13", verbose_name='SSN', blank=False) 

我想要做的是沒有「last_four_ssn」,然後創建一個表單時提交表單(和驗證),那麼我想設置last_four_ssn的,好了,過去四年在SSN號。

class PersonCreate(PersonCRUDView, CreateView): 
    fields = ['username', 'first_name', 'middle_initial', 'last_name', 
      'ssn', 'email', 'years_of_service', 'birth_date', 
      'address', 'city', 'state', 'zip_code'] 

    def form_valid(self, form): 
     form.cleaned_data['ssn_last_four'] = form.cleaned_data['ssn'][-4:] 
     return super(PersonCreate, self).form_valid(form) 

但它似乎沒有工作。

如何保存ssn_last_four?如果你想使用form_valid

forms.py

from .models import Person 

PersonForm(forms.ModelForm): 

model = Person 

fields = ['username', 'first_name', 'middle_initial', 'last_name', 
      'ssn', 'email', 'years_of_service', 'birth_date', 
      'address', 'city', 'state', 'zip_code'] 

視圖 從django.http進口的HttpResponse

from .forms import PersonForm 

class PersonCreate(PersonCRUDView, CreateView): 

    form_class = PersonForm 

    def post(self, request, *args, **kwargs): 
     form = self.form_class(request.POST) 
     if form.is_valid(): 
      submited_form = form.save(commit=False) 
      submited_form.ssn_last_four = form.cleaned_data['ssn'][-4:] 
      submited_form.save() 
      # return an HTTPResponse here, example: 
      return HttpResponse("Saved!") 

+0

我承認我一定會錯過一些愚蠢的東西。谷歌搜索全部,並沒有看到如何設置它。 – brechmos 2014-09-01 15:27:52

回答

0

我通常使用POST方法,像這樣方法:

def form_valid(self, form): 
     self.object = form.save(commit=False) 
     self.object.ssn_last_four = form.cleaned_data['ssn'][-4:] 
     self.object.save() 
     return super(ModelFormMixin, self).form_valid(form) 
+0

嘿,這個工作適合你嗎? – elmonkeylp 2014-09-04 17:56:26