2017-08-04 37 views
0

這是我的代碼:Django的:無效字面對於int()與底座10: '編號'

** urls.py:**

from django.conf.urls import url, include 
from base_app import views 
from django.contrib.auth import views as auth_views 

app_name = 'base_app' 

urlpatterns = [ 
    url(r'^forms/$', views.form, name='form'), 
    url(r'^tables/$', views.table, name='table'), 
    url(r'^register/', views.register, name='register'), 
    url(r'^login/$', views.user_login, name='login'), 
    url(r'^logout/$', views.user_logout, name='logout'),# line added 
] 

** views.py:**

def form(request): 
    registered = False 
    if request.method == 'POST': 
     user_form = FormName(data=request.POST) 
     if user_form.is_valid(): 
      user = user_form.save() 
      user.save() 
      registered = True 
     else: 
      print(user_form.errors) 
    else: 
     user_form = FormName() 
     return render(request, 'base_app/form-samples.html', {'user_form':user_form, 'registered':registered}) 

    return render(request, 'base_app/form-samples.html') 

** models.py:**

class InfoForm(models.Model): 

    username = models.CharField(max_length=256, default='username') 
    email = models.EmailField(max_length=256, default='email') 
    number = models.PositiveIntegerField(max_length=256, null=True) 

    def __str__(self): 
     return self.user.username 

** forms.py:**

class FormName(forms.ModelForm): 

    class Meta: 
     model = InfoForm 
     fields = ('username', 'email', 'number') 

後,當我運行,python manage.py migrate

我得到這個消息 - >ValueError: invalid literal for int() with base 10:「number'`

問題出在哪裏?

+2

如果錯誤在遷移中,您應該顯示遷移,而不是不相關的窗體,視圖和URL。 –

+3

我可以幫助顯示堆棧跟蹤的一些行,以查看錯誤發生的位置。 –

+0

我不確定這是否相關,但我不認爲Django會在'''EmailField''上設置'''default ='email''',因爲這在技術上並不有效 – tdsymonds

回答

1

PositiveIntegerField不支持max_length選項。它的範圍是從0到2147483647.

from django.core.validators import MaxValueValidator 
... 
number = models.PositiveIntegerField(validators=[MaxValueValidator(256)]) 
+0

我得到這個:__init __()有一個意外的關鍵字參數'max_value'。也當我說:number = models.PositiveIntegerField(null = True)。我再次得到這個異常:ValueError:無效文字爲int()以10爲基數:'number'' –

+0

您也可以使用MaxValueValidator來解決它。我已經更新了我的答案以反映這一點。 –

相關問題