Re: How to create a Generic Show View ?

2008-08-28 Thread koenb

Hi Mario,

I do not think that is possible with the builtin generic views.

I have created my own set of 'generic' views, one of which is also an
object_display.
You pass it a form definition (based on my displaymodelform class),
which gets instantiated with the display_only=True parameter.
Something like this (I left out some stuff to make it more readable, I
put in a lot of personal extras in there).

def object_display(request, Model=None, object=None, object_id=None,
Form=None, extra_context={}, template="crud/display.html"):
"Display single object"
if not Model:
raise ImproperlyConfigured, 'object_display requires a Model'
if not object:
object = get_object_or_404(Model, pk=object_id)
ec = {'object': object}
if Form:
form = Form(instance=object, display_only = True)
ec['form'] = form
ec.update(extra_context)
return render_to_response(template, ec, RequestContext(request))

You also need a template that has {{ form }} in a table definition
(you can leave out the  tags).

To call it, I always use wrapper functions in views.py, because I find
that a lot more readable (and often I need to define a lot of extra
context).

Koen

On 27 aug, 18:17, "Mario Hozano" <[EMAIL PROTECTED]> wrote:
> Hi Koen,
>
> I think your code snippet will work fine in my application too. But, how
> instantiate the DisplayModelForm directly in my urls.py showed below?
>
> (r'^core/user/show/(?P\d+)/$', 'object_detail',
> dict(queryset=User.objects.all(),
>
> template_name="baseshow.html",
>
> extra_context={'model_entity':'user'}))
>
> Should I use the 'django.views.generic.create_update.create_object' view? I
> want only to use the urls.py without write in views.py to instantiate the
> form.
>
> Is it possible?
>
> Thanks.
> Mario Hozano.
>
>
>
> On Wed, Aug 27, 2008 at 3:34 AM, koenb <[EMAIL PROTECTED]> wrote:
>
> > Hi Mario,
>
> > a few months ago I posted a snippet on djangosnippets [1] that kind of
> > does something like this: it takes a form (can be the same one you use
> > for editing) and displays it as read-only. The disadvantage is it uses
> > the entire form machinery just to display some values, which is a lot
> > of overhead, the advantage is I have quick and dirty display of data
> > without much extra work (I have my own generic view wrapped around
> > this).
> > It needs a lot of improvement, but it works ok for me for now.
>
> > Koen
>
> > [1]:http://www.djangosnippets.org/snippets/758/
>
> > On 26 aug, 20:00, Mario Hozano <[EMAIL PROTECTED]> wrote:
> > > Hi People.
>
> > > I am new in Django and I am using the django support to create generic
> > > views (CRUD) in my app. To handle Create and Show actions, i have
> > > written 2 main pages with the code snippets described below.
>
> > > baseform.html
> > >         {% for field in form %}
> > >             {{ field.label_tag }}{% if field.field.required %}*{%
> > endif
> > > %}
> > >             {{ field }}
> > >             {% if field.help_text %}{{ field.help_text }}{%
> > endif %}
> > >             {% if field.errors %}{{ field.errors
> > }} > > dd>{% endif %}
> > >         {% endfor %}
>
> > > baseshow.html.
> > >         {% for key, value in object.as_dict.items %}
> > >             {{ key.capitalize }}
> > >             {{ value }}
> > >         {% endfor %}
>
> > > These pages are called directly from my urls.py that uses the Generic
> > > views supported by django. In this sense, the baseform.html can be
> > > used by all model classes, because the ModelForm handles the
> > > presentation of each model attribute (excluding id) transparently.
>
> > > In baseshow.html I need to show the same attributes of a given model
> > > class, as done in baseform.html. In this case, the attributes
> > > (excluding id) must be presented in a read-only mode, with html labels
> > > instead of input widgets. To do it, i've implemented a "as_dict"
> > > method in each model class. This method only returns the
> > > "self.__dict__" attribute of the model classes, hence, the private
> > > attributes cannot be acessed from templates.
>
> > > The solution presented works, but it is ugly, because the id attribute
> > > must be verified on template and it needs to adjust the model class to
> > > work fine.
>
> > > Does Django offer another way to present the model attributes in a
> > > Show view? Is it possible to use a ModelForm class to show the
> > > attribute values in html labels?
>
> > > Thanks.
> > > Mario Hozano
>
> --
> Mário Hozano Lucas de Souza
> Embedded and Pervasive Computing Laboratory - embedded.ufcg.edu.br
> Electrical Engineering and Informatics Center - CEEI
> Federal University of Campina Grande - UFCG -www.ufcg.edu.br
> PGP: 0xAEA0ACBD
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 

Re: How to create a Generic Show View ?

2008-08-27 Thread Mario Hozano
Hi Koen,

I think your code snippet will work fine in my application too. But, how
instantiate the DisplayModelForm directly in my urls.py showed below?

(r'^core/user/show/(?P\d+)/$', 'object_detail',
dict(queryset=User.objects.all(),

template_name="baseshow.html",

extra_context={'model_entity':'user'}))

Should I use the 'django.views.generic.create_update.create_object' view? I
want only to use the urls.py without write in views.py to instantiate the
form.

Is it possible?

Thanks.
Mario Hozano.


On Wed, Aug 27, 2008 at 3:34 AM, koenb <[EMAIL PROTECTED]> wrote:

>
> Hi Mario,
>
> a few months ago I posted a snippet on djangosnippets [1] that kind of
> does something like this: it takes a form (can be the same one you use
> for editing) and displays it as read-only. The disadvantage is it uses
> the entire form machinery just to display some values, which is a lot
> of overhead, the advantage is I have quick and dirty display of data
> without much extra work (I have my own generic view wrapped around
> this).
> It needs a lot of improvement, but it works ok for me for now.
>
> Koen
>
> [1]: http://www.djangosnippets.org/snippets/758/
>
> On 26 aug, 20:00, Mario Hozano <[EMAIL PROTECTED]> wrote:
> > Hi People.
> >
> > I am new in Django and I am using the django support to create generic
> > views (CRUD) in my app. To handle Create and Show actions, i have
> > written 2 main pages with the code snippets described below.
> >
> > baseform.html
> > {% for field in form %}
> > {{ field.label_tag }}{% if field.field.required %}*{%
> endif
> > %}
> > {{ field }}
> > {% if field.help_text %}{{ field.help_text }}{%
> endif %}
> > {% if field.errors %}{{ field.errors
> }} > dd>{% endif %}
> > {% endfor %}
> >
> > baseshow.html.
> > {% for key, value in object.as_dict.items %}
> > {{ key.capitalize }}
> > {{ value }}
> > {% endfor %}
> >
> > These pages are called directly from my urls.py that uses the Generic
> > views supported by django. In this sense, the baseform.html can be
> > used by all model classes, because the ModelForm handles the
> > presentation of each model attribute (excluding id) transparently.
> >
> > In baseshow.html I need to show the same attributes of a given model
> > class, as done in baseform.html. In this case, the attributes
> > (excluding id) must be presented in a read-only mode, with html labels
> > instead of input widgets. To do it, i've implemented a "as_dict"
> > method in each model class. This method only returns the
> > "self.__dict__" attribute of the model classes, hence, the private
> > attributes cannot be acessed from templates.
> >
> > The solution presented works, but it is ugly, because the id attribute
> > must be verified on template and it needs to adjust the model class to
> > work fine.
> >
> > Does Django offer another way to present the model attributes in a
> > Show view? Is it possible to use a ModelForm class to show the
> > attribute values in html labels?
> >
> > Thanks.
> > Mario Hozano
> >
>


-- 
Mário Hozano Lucas de Souza
Embedded and Pervasive Computing Laboratory - embedded.ufcg.edu.br
Electrical Engineering and Informatics Center - CEEI
Federal University of Campina Grande - UFCG - www.ufcg.edu.br
PGP: 0xAEA0ACBD

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: How to create a Generic Show View ?

2008-08-27 Thread koenb

Hi Mario,

a few months ago I posted a snippet on djangosnippets [1] that kind of
does something like this: it takes a form (can be the same one you use
for editing) and displays it as read-only. The disadvantage is it uses
the entire form machinery just to display some values, which is a lot
of overhead, the advantage is I have quick and dirty display of data
without much extra work (I have my own generic view wrapped around
this).
It needs a lot of improvement, but it works ok for me for now.

Koen

[1]: http://www.djangosnippets.org/snippets/758/

On 26 aug, 20:00, Mario Hozano <[EMAIL PROTECTED]> wrote:
> Hi People.
>
> I am new in Django and I am using the django support to create generic
> views (CRUD) in my app. To handle Create and Show actions, i have
> written 2 main pages with the code snippets described below.
>
> baseform.html
>         {% for field in form %}
>             {{ field.label_tag }}{% if field.field.required %}*{% endif
> %}
>             {{ field }}
>             {% if field.help_text %}{{ field.help_text }}{% endif %}
>             {% if field.errors %}{{ field.errors }} dd>{% endif %}
>         {% endfor %}
>
> baseshow.html.
>         {% for key, value in object.as_dict.items %}
>             {{ key.capitalize }}
>             {{ value }}
>         {% endfor %}
>
> These pages are called directly from my urls.py that uses the Generic
> views supported by django. In this sense, the baseform.html can be
> used by all model classes, because the ModelForm handles the
> presentation of each model attribute (excluding id) transparently.
>
> In baseshow.html I need to show the same attributes of a given model
> class, as done in baseform.html. In this case, the attributes
> (excluding id) must be presented in a read-only mode, with html labels
> instead of input widgets. To do it, i've implemented a "as_dict"
> method in each model class. This method only returns the
> "self.__dict__" attribute of the model classes, hence, the private
> attributes cannot be acessed from templates.
>
> The solution presented works, but it is ugly, because the id attribute
> must be verified on template and it needs to adjust the model class to
> work fine.
>
> Does Django offer another way to present the model attributes in a
> Show view? Is it possible to use a ModelForm class to show the
> attribute values in html labels?
>
> Thanks.
> Mario Hozano
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~--~~~~--~~--~--~---



How to create a Generic Show View ?

2008-08-26 Thread Mario Hozano

Hi People.

I am new in Django and I am using the django support to create generic
views (CRUD) in my app. To handle Create and Show actions, i have
written 2 main pages with the code snippets described below.

baseform.html
{% for field in form %}
{{ field.label_tag }}{% if field.field.required %}*{% endif
%}
{{ field }}
{% if field.help_text %}{{ field.help_text }}{% endif %}
{% if field.errors %}{{ field.errors }}{% endif %}
{% endfor %}

baseshow.html.
{% for key, value in object.as_dict.items %}
{{ key.capitalize }}
{{ value }}
{% endfor %}

These pages are called directly from my urls.py that uses the Generic
views supported by django. In this sense, the baseform.html can be
used by all model classes, because the ModelForm handles the
presentation of each model attribute (excluding id) transparently.

In baseshow.html I need to show the same attributes of a given model
class, as done in baseform.html. In this case, the attributes
(excluding id) must be presented in a read-only mode, with html labels
instead of input widgets. To do it, i've implemented a "as_dict"
method in each model class. This method only returns the
"self.__dict__" attribute of the model classes, hence, the private
attributes cannot be acessed from templates.

The solution presented works, but it is ugly, because the id attribute
must be verified on template and it needs to adjust the model class to
work fine.

Does Django offer another way to present the model attributes in a
Show view? Is it possible to use a ModelForm class to show the
attribute values in html labels?

Thanks.
Mario Hozano

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~--~~~~--~~--~--~---