Maybe try:

val = getattr(obj, 'get_%s_display' % field.name)()


On 1/24/12, katstevens <kat.stev...@gmail.com> wrote:
> I have a model ContactDetail with two choice fields,
> ContactDetail.dialing_code and ContactDetail.country. These use the
> standard tuples ('AU', 'Australia') and so on.
>
> I know I can use get_country_display() and get_dialing_code_display()
> to show the longer values, but is there a more generic version where
> the field name is replaced with a variable?
>
> For example, I want to create a customised .csv file from the model
> data. I can loop through the fields from my model and get the shorter
> attribute values without any problems. However I'd like to do
> something like this:
>
>       obj = queryset[my_item]     # an instance of ContactDetail()
>       model = queryset.model     # ContactDetail() itself
>
>       for field in model._meta.fields:
>               val = getattr(obj, field.name)      # gets the shorter version
>               if field.choices:                # if field is ChoiceField, 
> convert data
> to display mode
>                       val = obj.get_field_display()
>               row.append(val)
>
> Obviously the 'val = obj.get_field_display()' line doesn't work!
>
> Is there a generic way of doing this (something like
> obj.get_display(fieldname) ?) or am I going to have to hard code
> separate checks for get_country_display() and
> get_dialing_code_display()?
>
> Ideally I would like to use this particular function for other models
> and keep the fields as generic as possible.
>
> --
> 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
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
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 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to