2015-04-02 75 views
0

我在Django 1.4.5中有一個應用程序。 我在那裏添加了一個字段(tshirt_size) - 它有一個默認值:大小S. 當我在視圖中添加代碼時,出現服務器錯誤。當視圖中沒有代碼時,儘管事實上我選擇了XL,但只有尺寸S(管理面板)。模型中的字段不會出現在Django應用程序的視圖中

這裏是一個,加場到我的模型:

tshirt_size = models.CharField(choices=TSHIRT_SIZE_CHOICES, default="s", blank=True, max_length=24) 

這裏是我的形式

TSHIRT_SIZE_CHOICES = (
    ('s', 'S'), 
    ('m', 'M'), 
    ('l', 'L'), 
    ('xl', 'XL') 
) 

class SubscriberForm(forms.ModelForm): 
    class Meta(): 
     model = Subscriber 
     exclude = ['event', 'is_active'] 
     widgets = { 
      'prefix': Select(choices=PREFIX_CHOICES), 
      'name': TextInput(), 
      'last_name': TextInput(), 
      'email': TextInput(), 
      'company': TextInput(), 
      'job_title': TextInput(), 
      'phone_number': TextInput(), 
      'tshirt_size': Select(choices=TSHIRT_SIZE_CHOICES), 
     } 

這是我的觀點:

def add_subscriber(request): 
    """ 
    Receiving data via Ajax 
    """ 
    result = json.dumps({'result': 'Missing data'}) 
    if request.is_ajax(): 
     form = SubscriberForm(request.POST) 
     if form.is_valid(): 
      email = request.POST.get('email') 

      if email is not None: 
       event_pk = request.POST.get('id') 
       prefix = request.POST.get('prefix') 
       name = request.POST.get('name') 
       last_name = request.POST.get('last_name') 
       company = request.POST.get('company') 
       job_title = request.POST.get('job_title') 
       phone_number = request.POST.get('phone_number') 

       try: 
        event = Event2.objects.get(pk=event_pk) 
       except Event2.DoesNotExist: 
        result = json.dumps({'result': 'No event'}) 
        return HttpResponse(result, content_type='application/json') 

       if Subscriber.objects.filter(
         email__iexact=email, event=event).exists(): 
        result = json.dumps({'result': 'Already Registered'}) 
        return HttpResponse(result, content_type='application/json') 

       subscriber = Subscriber(
        event=event, 
        prefix=prefix, 
        name=name, 
        last_name=last_name, 
        email=email, 
        company=company, 
        job_title=job_title, 
        phone_number=phone_number,) 
       subscriber.save() 
       result = json.dumps({'result': 'ok'}) 
       return HttpResponse(result, content_type='application/json') 

    return HttpResponse(result, content_type='application/json') 

回答

0

這整個觀點是不必要的。正如你已經被告知的那樣,你應該在is_valid塊內調用form.save()。這會自動獲取所有字段併爲您創建一個模型實例。

相關問題