Hi, Thanks for the tip, i tried adding the user as the argument, i tried the following: new_post = pform.save(user=request.user) new_post = pform.save(user) new_post = pform.save(request.user) and a few other things...
Now i just get the following save() takes at least 2 arguments (2 given) Any ideas? Thanks, Jason On Thursday, 7 November 2013 10:52:16 UTC-10, Jason S wrote: > > Hi Paul, > Thanks, now you mention it and I look at it again it seems obvious, can't > see the wood for the trees moment. > Funnily enough I had that included at some point, but have made so many > changes. > > I'll try that tonight when I get home, thanks very much for the prompt > reply! > Kind regards, > Jason > > On Thursday, 7 November 2013 04:56:14 UTC-10, [email protected] wrote: >> >> Hey Jason-- >> >> You defined the save method as needing the user parameter, but you don't >> pass that in. Try that (assuming user should equal request.user). Good >> luck! >> >> -Paul >> >> On Thursday, November 7, 2013 5:25:18 AM UTC-5, Jason S wrote: >>> >>> Hi, >>> Disclaimer - I'm new to django and python, so please bear with me. >>> >>> Note: My django instance uses a nosql database. >>> >>> I'm trying to create a formset which has multiple forms based on models. >>> The formset will have one form "post", then 1-3 "comment" forms. >>> Eventually i'd like to be able to add/remove the comment fields but i'll >>> work that out later once the form saves with manually set number of comment >>> fields. >>> For now the formset just has the two forms "post" and "comment" to make >>> it easy, but if i can save one it should work for more. >>> The form displays as expected but I get "save() takes at least 2 >>> arguments (1 given)". >>> >>> I think thats because i'm supplying the "post" data, but not the object >>> itself? I've tried referencing it but without success. >>> I may need to set the form up as a class with methods and then use >>> something like the following which is how another tut does it, but my first >>> attempt to do it this way failed. >>> 21 def post(self, request, *args, **kwargs): >>> 22 self.object = self.get_object() >>> 23 form = CommentForm(object=self.object, data=request.POST) >>> 24 >>> 25 if form.is_valid(): >>> 26 form.save() >>> 27 return >>> HttpResponseRedirect(self.object.get_absolute_url()) >>> >>> >>> *Models:* >>> 7 class Object_Post(models.Model): >>> 8 # Defines the post model >>> 9 def __unicode__(self): >>> 10 return self.name >>> 11 >>> 12 name = models.CharField(max_length=70) >>> 13 desc = models.TextField() >>> 14 Comments = ListField(EmbeddedModelField('Comment), >>> editable=False) >>> 15 >>> 16 >>> 17 class Comment(models.Model): >>> 18 # Comments. >>> 19 def __unicode__(self): >>> 20 return self.name >>> 21 >>> 22 name = models.CharField(max_length=70) >>> 23 desc = models.TextField() >>> >>> *Forms:* >>> 39 class PostForm(forms.ModelForm): >>> 40 class Meta: >>> 41 model = Object_Post >>> 42 >>> 43 def save(self, user, commit = True): >>> 44 Object_Post = super(PostForm, self).save(commit = False) >>> 45 Object_Post.user = user >>> 46 >>> 47 if commit: >>> 48 Object_Post.save() >>> 49 >>> 50 return Object_Post >>> 51 >>> 52 class CommentForm(forms.ModelForm): >>> 53 class Meta: >>> 54 model = Comment >>> 55 >>> 56 def save(self, user, commit = True): >>> 57 Comment = super(CommentForm, self).save(commit = False) >>> 58 Comment.user = user >>> 59 >>> 60 if commit: >>> 61 Comment.save() >>> 62 >>> 63 return Comment >>> >>> *View:* >>> 65 def create_post(request): >>> 66 .... >>> 67 # >>> 68 # Manually set number of comment fields for now >>> 69 commentfields = 1 >>> 70 >>> 71 if request.method == "POST": >>> 72 pform = PostForm(request.POST, instance=Object_Post()) >>> 73 # >>> 74 cforms = [CommentForm(request.POST, prefix=str(x), >>> instance=Comment()) for x in range(0,Commentfields)] >>> 75 if pform.is_valid() and all([cf.is_valid() for cf in >>> cforms]): >>> 76 # >>> 77 new_post = pform.save() >>> 78 for cf in cforms: >>> 79 new_Comment = cf.save(commit=False) >>> 80 new_Comment.Object_Post = new_post >>> 81 new_Comment.save() >>> 82 return >>> HttpResponseRedirect(reverse('blogtut.views.dashboard')) >>> 83 else: >>> 84 pform = PostForm(instance=Object_Post()) >>> 85 cforms = [CommentForm(prefix=str(x), instance=Comment()) for >>> x in range(0,Commentfields)] >>> 86 return render_to_response('create_object.html', >>> {'Post_Form': pform, 'Comment_Form': cforms}, >>> 87 context_instance=RequestContext(request) >>> 88 ) >>> >>> *Template:* >>> 1 {% extends "base.html" %} >>> 2 >>> 3 {% block content %} >>> 4 <dl> >>> 5 >>> # Irrelevent to the form. >>> 11 >>> 12 </dl> >>> 13 >>> 14 <form action="{% url blogtut.views.create_post %}" method="post" >>> accept-ch> >>> 15 {% csrf_token %} >>> 16 {{ form.as_p }} >>> 17 >>> 18 Enter a name and description for the post: </br> >>> 19 {{ Post_Form }} </br> >>> 20 Enter one or more Comments:</br> >>> 21 {% for mform in Comment_Form %} >>> 22 Comment: {{ cform }}</br> >>> 23 {% endfor %} >>> 24 .... >>> 25 <p><input type="submit" value="Create Now"/></p> >>> 26 </form> >>> 27 >>> 28 {% endblock %} >>> ~ >>> >>> I'd really appreciate any help here as i've been hitting my head against >>> this for a week or so now, would particularly appreciate examples as my >>> python/django skills are novice and it'll help me understand. >>> >>> Thanks for your time/help! >>> Jason >>> >> -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/65b10d56-318c-45ff-823a-2d20dc1f1893%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.

