I would like tighten the link from URLs to instances of Models and
have something like:
import foo.FooModel
urlpatterns = patterns('',
(r'foo/create/?$', 'foo.FooModel.create'),
(r'foo/(?P<foo_id>\d+)/?$', 'foo.FooModel.view'),
(r'foo/(?P<foo_id>\d+)/edit$', 'foo.FooModel.edit'),
)
Basically I'd like some way that URL operations map directly to the
model methods, either class methods (for statics or for instance
creation), or to a method that is "in context" relative to a
particular instance somehow fetched from the URL parameters (in the
example here, via the <foo_id> pattern group).
I realize this isn't in typical Django style, but I'd be interested
any feedback. The rough idea is outlined below.
Regards,
Ian
class FooModel(Model):
@classmethod
def create(cls, request):
if request.method == "GET":
blank = FooForm()
result = render_to_response("foo_creation_form.html",
{'form': blank})
elif request.method == "POST":
completed = FooForm(request.POST, request.FILES)
if completed.is_valid():
foo = completed.save()
result = HttpResponseRedirect(reverse
('module.FooModel.view', kwargs={'foo_id': foo.id}))
else:
result = render_to_response("foo_creation_form.html",
{'form': completed})
return result
@classmethod
def view(cls, request, foo_id=None):
foo = get_object_or_404(FooModel, id=foo_id)
completed = FooForm(instance=foo)
result = render_to_response("foo_view_form.html", {'form':
completed})
return result
@classmethod
def edit(cls, request):
if request.method == "GET":
foo = get_object_or_404(FooModel, id=foo_id)
completed = FooForm(instance=foo)
result = render_to_response("foo_edit_form.html", {'form':
completed})
elif request.method == "POST":
completed = FooForm(request.POST, request.FILES)
if completed.is_valid():
foo = completed.save()
result = HttpResponseRedirect(reverse
('module.FooModel.view', kwargs={'foo_id': foo.id}))
else:
result = render_to_response("foo_edit_form.html",
{'form': completed})
return result
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
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
-~----------~----~----~----~------~----~------~--~---