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
Post a Comment