On Wednesday, 25 July 2012 02:42:45 UTC+1, Matthew Meyer wrote: > > Hello all, > > I'm trying to load the url of a model created with get_absolute_url() > programmatically in my view. There are basically three steps I need to > accomplish this: > > 1. make sure @permalink is working correctly. This step I am fairly > confident I have completed. Here is the model I use: > http://dpaste.org/nH0cZ/ > > 2. make sure I am rendering the url correctly in my view: > http://dpaste.org/FOGjs/ > > This view is fairly involved. The return statement on line 12 is where I > am trying to load the url. In a nutshell, if the request is GET this view > renders a form for the user which they can use to fill some fields in a > model. one of the fields they fill ("name") I want to use as my the > rendered url, which is why I am trying to pass {'event': Event} on line > 12 when request.method == 'POST' and the user has submitted the form. > Right now when the user submits the post, the event_page.hml loads but > without the event object url. > > 3. make sure my urlconfs are working:: http://dpaste.org/LPdfK/ Not > positive here, but I know this is fairly simple to most. I just tried to > follow what the docs had for get_absolute_url and @permalink ( > https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#django.db.models.permalink) > > Something is wrong though because the "view on website" button in admin is > leading to a permalinked url that doesn't match. > > As you can see, I am quite a bit lost and could really use some guidance. > Any help is appreciated. Thanks! >
Your problem is in step 2. `Event` is the model class itself, but you want to render the URL for a particular instance of that class. Presumably you want the event that has been created by the form. I don't understand why you are using a formset though: that implies you are creating multiple events, whereas you talk about showing the URL for a single event, which makes more sense. Sounds like you should use a simple ModelForm, and if it's valid do `event = form.save()` - now you can pass that `event` object to the template. Finally, note that rendering a template directly after a POST is a bad idea, as the documentation explains. You should always redirect to a new page: you could redirect directly to the new event's URL if you like. -- DR. -- 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/-/z3oM38TtTCMJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.