Thanks. This worked:

else:
        story_form = StoryForm(request.user, instance=story_form)


One problem: it just adds a new version of the story instead of updating 
the previous version. So "editing" just creates multiple versions instead 
of actually editing the existing story.

Is there a way to remedy this?

On Friday, May 18, 2012 5:37:44 PM UTC-4, jondbaker wrote:
>
> The lines:
>     #else:
>         #story_form = StoryForm(instance=story_form)
> ...appear to be handling the GET request, and they're commented out.
>
> On Fri, May 18, 2012 at 3:22 PM, DF <[email protected]> wrote:
>
>> Newbie question. I have an application where registered users can submit 
>> stories. The posting and display works great but I wanted users to have the 
>> ability to edit any of their stories. The goal would be for a user to find 
>> a list of their stories on their profile page, choose one that they would 
>> like to edit, and then retrieve the form they initially submitted with the 
>> current information filled in to make the necessary edits.
>>
>> I composed a view, url and template to achieve this. The page displays, 
>> the story number from the url appears in the address bar but the form is 
>> nowhere to be found. I can't figure out if what I'm doing is an error in 
>> the template or the view (I'm thinking the former but can't be sure).
>>
>> Here is the model:
>>
>> class Story(models.Model):
>>     objects = StoryManager()
>>     title = models.CharField(max_length=100)
>>     topic = models.CharField(max_length=50)
>>     copy = models.TextField()
>>     author = models.ForeignKey(User, related_name="stories")
>>     zip_code = models.CharField(max_length=10)
>>     latitude = models.FloatField(blank=False, null=False)
>>     longitude = models.FloatField(blank=False, null=False)
>>     date = models.DateTimeField(auto_now=True, auto_now_add=True)
>>     pic = models.ImageField(upload_to='pictures', blank=True)
>>     caption = models.CharField(max_length=100)
>>
>>     def __unicode__(self):
>>         return " %s" % (self.title)
>>
>> Here is the form:
>>
>> class StoryForm(forms.ModelForm):
>>     class Meta:
>>         model = Story
>>         exclude = ('author',)
>>
>>     def __init__(self, author, *args, **kwargs):
>>         super(StoryForm, self).__init__(*args, **kwargs)
>>         self.author = author
>>
>>
>>     def save(self, commit=True):
>>         self.instance.author = self.author
>>         return super(StoryForm, self).save(commit)
>>
>> Here are the submit and edit views:
>>
>> @login_required
>> def submit_story(request):
>>     story_form = None
>>     if request.method =="POST":
>>         story_form = StoryForm(request.user, data=request.POST, 
>> files=request.FILES)
>>         if story_form.is_valid():
>>             new_story = story_form.save(commit=True)
>>             return HttpResponseRedirect("/report/all/")
>>
>>     return render_to_response("report/report.html", {'form': story_form 
>> or StoryForm(request.user) }, context_instance=RequestContext(request))
>>
>> @login_required
>> def edit_story (request, story_id):
>>     story_form = None
>>     if story_id:
>>         story_form = get_object_or_404(Story, pk=story_id)
>>         if story_form.author != request.user:
>>             return HttpResponse("You can only edit your own stories!")
>>
>>     if request.method == 'POST':
>>         story_form = StoryForm(request.user, data=request.POST, 
>> files=request.FILES)
>>         if story_form.is_valid():
>>             story_form.save(commit=True)
>>             return HttpResponse("/profiles/user_profile")
>>     #else:
>>         #story_form = StoryForm(instance=story_form)
>>
>>     return render_to_response('report/storyedit.html', {'form': 
>> story_form or StoryForm(request.user) }, 
>> context_instance=RequestContext(request))
>>
>>
>> The urls:
>>
>>     url(r'^report/$', 'project.report.views.submit_story', 
>> name='write_story'),
>>     url(r'^detail/(?P<story_id>\d*)/edit/$', 
>> 'project.report.views.edit_story', )
>>
>> And the edit template:
>>
>> {% extends 'base.html' %}
>> {% load report %}
>> {% block page_title %}Edit Story{% endblock %}
>> {% block headline %}Edit Story{% endblock %}
>> {% block content %}
>>
>>     <div class="row">
>>         <div class="span12">
>>             <div class="page-header">
>>                 <h2>Edit your story, <a href="{% url 
>> profiles_profile_detail user.username %}">{{user.username}}!</a></h2>
>>             </div>
>>
>>             <form action="" class="form form-horizontal" method="post" 
>> enctype="multipart/form-data">
>>
>>                 <fieldset>
>>                     {% generic_form form %}
>>                     <div class="form-actions">
>>                         <input type="submit" value="Submit" class="btn 
>> btn-primary"/>
>>                     </div>
>>                 </fieldset>
>>             </form>
>>         </div>
>>     </div>
>> {% endblock %}
>>
>>
>> This is likely a stupid error but hours of scratching my head led me to 
>> seek some guidance. Any help welcomed and appreciated. Trying very hard to 
>> learn.
>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msg/django-users/-/arNGcd_FldoJ.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/django-users?hl=en.
>>
>
>
>
> -- 
> Jonathan D. Baker
> Developer
> http://jonathandbaker.com
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/pct7yxxnacEJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to