python - Receiving an error as follows - IntegrityError at /rango/category/Django/add_page/ NOT NULL constraint failed: rango_page.category_id -


here views.py

from django.shortcuts import render .models import category , page .forms import categoryform , pageform django.http import httpresponse  # create views here.  def index(request):     cat_list = category.objects.all()     context_dict = {'boldmessage':'this motherfuckers bold context' , 'categories':cat_list}     return render(request , 'rango/index.html', context_dict)  def about(request):     context_dict = {'hoopdedoopdedoop':'about bitch'}     return render(request , 'rango/about.html' , context_dict)  def category(request , category_name_url):     print("-"*50)     print(category_name_url)     category_name = category_name_url.replace('_' , '')     context_dict = {'category_name':category_name}     try:         category = category.objects.get(name = category_name)         pages = page.objects.filter(category = category)    #retrieving associated pages         context_dict['pages'] = pages         context_dict['category'] = category     except category.doesnotexist:         pass     return render(request , 'rango/category.html' , context_dict)  def add_category(request):     print("yup beginning")     # if http request     if request.method == 'post':         #creating form instance , populating data request         form = categoryform(request.post)          #if form valid         if form.is_valid():             #saving category form             form.save(commit = true)              #now calling index view page             return index(request)         else:             #if supplied form contained errors , printing them terminal             print(form.errors)     else:         #if request not post, display form enter details         form = categoryform()     context_dict = {'form':form}     return render(request , 'rango/add_category.html' , context_dict)  def add_page(request , category_name):     print("-"*60)     print(category_name)     try:         cat = category.objects.get(name = category_name)     except category.doesnotexist:         cat = none      if request.method == 'post':         form = pageform(request.post)          if form.is_valid():             if cat:                 page = form.save(commit = true)                 page.category = cat                 page.views = 0                 page.save()                 return category(request , category_name)         else:             print(form.errors)     else:         form = pageform()     context_dict = {'form':form}     return render(request , 'rango/add_page.html' , context_dict) 

this urls.py

from django.conf.urls import patterns , url .import views  urlpatterns = [     url(r'^$' , views.index , name = 'index' ) ,     url(r'^about/' , views.about , name = 'about' ) ,     url(r'^category/(?p<category_name_url>\w+)/$' , views.category , name = 'category'),     url(r'^add_category/', views.add_category, name = 'add_category'),     url(r'add_page/' , views.add_page , name = 'add_page'),     url(r'category/(?p<category_name>\w+)/add_page/$' , views.add_page , name = 'add_page'), ] 

forms.py-

#in forms.py module, create number of classes inherit django's modelclass. #the modelform helper class allows me create django form existing django model. #now create modelforms defined page , category models.  django import forms .models import category , page  class categoryform(forms.modelform):     name = forms.charfield(max_length = 128 , help_text = "please enter category name.")     views = forms.integerfield(widget = forms.hiddeninput() , initial = 0)     likes = forms.integerfield(widget = forms.hiddeninput() , initial = 0)      #to provide additional information on form     class meta:         #to provide association between modelform , model         model = category          #this refers fields wanna include in form         fields = ('name',)  class pageform(forms.modelform):     title = forms.charfield(max_length = 128 , help_text = "enter title of page.")     url = forms.charfield(max_length = 128 , help_text = "enter url of page.")     views = forms.integerfield(widget = forms.hiddeninput() , initial = 0)      def clean(self):         cleaned_data = self.cleaned_data         url = cleaned_data.get('url')          if url , not url.startswith('http://'):             url = 'http://' + url             cleaned_data['url'] = url         return cleaned_data      #to provide additional information on form     class meta:         #to provide association between modelform , model         model = page          #these refer fields wanna include in form         fields = ('title' , 'url' , 'views') 

models.py -

from django.db import models  # create models here.  class category(models.model):     name = models.charfield(max_length = 128 , unique = true)     views = models.integerfield(default = 0)     likes = models.integerfield(default = 0)      def __str__(self):         return self.name  class page(models.model):     category = models.foreignkey(category)     #foreign key one-to-,any relationship. on here means 1 page related several categories     title = models.charfield(max_length = 128)     url = models.urlfield()     views = models.integerfield(default = 0)      def __str__(self):         return self.title 

add_page template-

<html>     <head>         <title>rango</title>     </head>      <body>         <h1>add page</h1>         <form id="category form" method="post" action="/rango/category/{{ category_name }}/add_page/">             {% csrf_token %}             {{ form.as_p }}             <input type="submit" name="submit" value="create page">         </form>     <a href="/rango/">home</a>     </body> </html> 

the traceback -

integrityerror @ /rango/category/django/add_page/  not null constraint failed: rango_page.category_id  request method:     post request url:    http://127.0.0.1:8000/rango/category/django/add_page/ django version:     1.9.2 exception type:     integrityerror exception value:      not null constraint failed: rango_page.category_id  exception location:     c:\python35-32\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 323 python executable:  c:\python35-32\python.exe python version:     3.5.1 python path:      ['c:\\nos\\coding\\django\\tango_with_django_project',  'c:\\nos\\coding\\django\\tango_with_django_project',  'c:\\python35-32\\python35.zip',  'c:\\python35-32\\dlls',  'c:\\python35-32\\lib',  'c:\\python35-32',  'c:\\python35-32\\lib\\site-packages']  server time:    sat, 6 feb 2016 23:48:51 +0530   

upon clicking submit, compiler throws error stated. question here, error , how find way around ?

add_page() takes 2 arguments: request, automatically provided django, , category_name, must provide (and aren't.)


Comments

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -