Electronics & Programming

develissimo

Open Source electronics development and programming

  • You are not logged in.
  • Root
  • » Django
  • » Show HTML in Labels for Model Choice Fields [RSS Feed]

#1 Dec. 31, 2010 00:36:08

A.
Registered: 2009-11-02
Reputation: +  0  -
Profile   Send e-mail  

Show HTML in Labels for Model Choice Fields


Hi I have a situation like this

class AppearanceThemesForm(forms.Form):
page_theme =
forms.ModelChoiceField(widget=forms.RadioSelect(attrs={'title':'Select
the appropriate theme for your pages.'}),

queryset=Theme.objects.filter(section="1"),

initial=Theme.objects.get(section="1",representation="").pk,
label="Page Theme")

And my Theme model is like this:

class Theme(models.Model):
name = models.CharField(max_length=32)
image = models.ImageField(upload_to="images/themes", null=True)

def __unicode__(self):
return "%s" % (self.name)


When I render AppearanceThemesForm in my template, i would like to be
able to show a link next to the label. If a user clicks the link, the
webpage displays the image associated with Theme.

I tried putting in a custom field that extends the ModelChoiceField,
and in the label_from_instance method, tried to output the HTML, but
that gets escaped.

What is the proper way to achieve what i am trying to do?

Alternatively, how do i get access the underlying model object behind
the modelchoice field in my templates?

--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group athttp://groups.google.com/group/django-users?hl=en.

Offline

#2 Jan. 3, 2011 05:34:25

A.
Registered: 2009-11-02
Reputation: +  0  -
Profile   Send e-mail  

Show HTML in Labels for Model Choice Fields


I was able to find the solution to it myself.

The key was to
1. Create a custom field that extended ModelChoiceField.
2. Overwrite the label_from_instance method in the custom field.
3. Return a HTML string from the label_from_instance method, and
marking that as a safe_string.


from django.forms import ModelChoiceField
from django.utils.safestring import mark_safe

class ThemeChoiceField(ModelChoiceField):
def label_from_instance(self,obj):
return mark_safe("%s - Click <a target='_other' rel='#theme_
%s' class='overlay_trigger'>here</a> to see an example. \
<div class='simple_overlay' id='theme_%s'><img src='%s'></
img></div> " \
% (obj.name, obj.pk, obj.pk, obj.image.url))

-Adi


On Dec 30 2010, 6:36 pm, Adi <aditya.rus...@gmail.com> wrote:
> Hi I have a situation like this
>
> class AppearanceThemesForm(forms.Form):
>     page_theme =
> forms.ModelChoiceField(widget=forms.RadioSelect(attrs={'title':'Select
> the appropriate theme for your pages.'}),
>
> queryset=Theme.objects.filter(section="1"),
>
> initial=Theme.objects.get(section="1",representation="").pk,
>                                         label="Page Theme")
>
> And my Theme model is like this:
>
> class Theme(models.Model):
>     name = models.CharField(max_length=32)
>     image = models.ImageField(upload_to="images/themes", null=True)
>
>     def __unicode__(self):
>         return "%s" % (self.name)
>
> When I render AppearanceThemesForm in my template, i would like to be
> able to show a link next to the label. If a user clicks the link, the
> webpage displays the image associated with Theme.
>
> I tried putting in a custom field that extends the ModelChoiceField,
> and in the label_from_instance method, tried to output the HTML, but
> that gets escaped.
>
> What is the proper way to achieve what i am trying to do?
>
> Alternatively, how do i get access the underlying model object behind
> the modelchoice field in my templates?

--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group athttp://groups.google.com/group/django-users?hl=en.

Offline

  • Root
  • » Django
  • » Show HTML in Labels for Model Choice Fields [RSS Feed]

Board footer

Moderator control

Enjoy the 13th of December
PoweredBy

The Forums are managed by develissimo stuff members, if you find any issues or misplaced content please help us to fix it. Thank you! Tell us via Contact Options
Leave a Message
Welcome to Develissimo Live Support