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.