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