2011-05-09 31 views
9

H1Radyo düğmelerini django formlarında yatay olarak hizalayın

Radyo düğmelerini yatay olarak hizalamak istiyorum. Varsayılan olarak django formları dikey biçimde görüntülenir.

feature_type = forms.TypedChoiceField(choices = formfields.FeatureType, widget = forms.RadioSelect) 

Radyo düğmeleri hizalaması için geçirebileceğimiz herhangi bir özel parametre var mı? RadioField davranışına Thats peşin

+2

Bu Django daha CSS sorunun daha olduğunu düşünüyorum: aldığımızda

akılda basit form tabanlı çözüm aşağıdaki gibi bir şey olurdu. Belki de radyo düğmelerine bir sınıf ekleyebilir ve yüzdüğünü söyleyebilirsiniz: sol; radyo düğmesi sınıfı için css'inizde. –

+1

Ben googled ve çalışmayı başaramadığım bir bağlantı bulduk. https://wikis.utexas.edu/display/~bm6432/Django-Modifying+RadioSelect+Widget+to+have+horizontal+buttons. CSS'yi eklemeyi deneyeceğim ve düzeltip düzeltmeyeceğini size bildireceğim. teşekkürler geekam – vkrams

cevap

22

yılında

teşekkürler. Eğer yatay hale istiyorsanız aşağıdaki gibi bir şey gibi, yatay bir renderer oluşturun:

from django.utils.safestring import mark_safe 

class HorizontalRadioRenderer(forms.RadioSelect.renderer): 
    def render(self): 
    return mark_safe(u'\n'.join([u'%s\n' % w for w in self])) 


class ApprovalForm(forms.Form): 
    approval = forms.ChoiceField(choices=APPROVAL_CHOICES, 
       initial=0, 
       widget=forms.RadioSelect(renderer=HorizontalRadioRenderer), 
           ) 
+0

Hey lakshman, yukarıdaki kodu çalıştırdığımda aldığım hata 'mark_safe' tanımlı değil. Buna yardım edebilecek yardımcı olabilirsiniz – vkrams

+0

Bu ürünü Django.templates'den içe aktarmalısınız. –

+1

Çalıştığınız ince laxman'ı soğutun. Yardım için teşekkürler :-) için çalıştığım mark_safe: 'django.utils.safestring import mark_safe'den – vkrams

1

Modifiye forms.RadioSelect: standartı yönetici ile Python 3.4 üzerinde çalışma

class HorizontalRadioSelect(forms.RadioSelect): 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 

     css_style = 'style="display: inline-block; margin-right: 10px;"' 

     self.renderer.inner_html = '<li ' + css_style + '>{choice_value}{sub_widgets}</li>' 

enter image description here

Django 1.10 Django Takım (http://djangosuit.com/)

(bu Bootstrap`s 2 tarzları kullanım)

enter image description here

Henüz Django-grappelli için test edilmemiştir.

1

the Django docs 'attrs' ifadesine göre, işlenen pencere aracında ayarlanacak HTML niteliklerini içeren bir sözlüktür.

feature_type = forms.TypedChoiceField(
    choices = formfields.FeatureType, 
    widget = forms.RadioSelect(attrs={ 
     'display': 'inline-block' 
    }) 
) 
İlgili konular