models.OneToOneField(Category,default='category')

This is not set in form and not set in view and is not null so when you do
post.save() error was raised and post is not saved.

I don't sure that you can pass str as default for OnetoOne and I am not
sure that you need a OnetoOne field I think foreignkey us better for you,
because have not sense have one category for every post, I think you want
several post in one category.





El martes, 28 de junio de 2016, kaustubh tripathi <kaustub...@gmail.com>
escribió:
> Hi everyone!
>
> I am creating a simple webapp using django where a user can login, choose
one of the given category and create a post under the chosen category.
>
> I am having trouble in creating a post. When I create a  new post through
django form the date isn't saved to database. I log in to the django-admin
to check if the post is created but the 'post' table remains empty.
>
> Here are the necessary code snippets:
>
> "Category model"
> class  Category(models.Model):
>
>     name = models.CharField(max_length=128,unique=True)
>     slug = models.SlugField()
>     def save(self,*args,**kwargs):
>         self.slug = slugify(self.name)
>         super(Category,self).save(*args,**kwargs)
>
>     def __unicode__(self):
>         return self.name
>
> "Post Model"
> class Post(models.Model):
>     category = models.OneToOneField(Category,default='category')
>     title = models.CharField(max_length=128,null=True)
>     content = models.TextField(blank=True,null=True)
>
>     def __unicode__(self):
>         return self.title
>
> "Postform/forms.py"
>
> class PostForm(forms.ModelForm):
>     title = forms.CharField(max_length=128)
>     content = forms.CharField(widget=forms.Textarea)
>     class Meta:
>         model = Post
>         fields = ('title','content')
>
> "create_post function/views.py"
>
> def create_post(request,category_name_slug):
>
>     created = False
>     instance = get_object_or_404(Category,slug=category_name_slug)
>     if request.method == 'POST':
>         form = PostForm(data=request.POST or None,instance=instance)
>         if form.is_valid():
>             post = form.save(commit=False)
>             post.save()
>             created = True
>         else:
>             print form.errors
>     else:
>         form = PostForm()
>     context={
>         'form':form,
>         'instance':instance,
>         'created':created
>     }
>     return render(request,"add_post.html",context)
>
>
> Any solution??
>
> --
> You received this message because you are subscribed to the Google Groups
"Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/cdf3882e-636e-4d2b-b626-6b60aaea9f5c%40googlegroups.com
.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
"La utopía sirve para caminar" Fernando Birri

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAG%2B5VyNpkULru70Wk3vOa2Sqkwd1HyX9Xy8X-Yt%3Du8gdDPZVTg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to