2013-05-07 14 views

cevap

7

Bir alanı çıkarmaya çalışıyorsanız, belgelere Removing Fields Per-instance bakabilirsiniz. Dokümanlar

:

Bazen, her koşulda veya tüm kullanıcılar için yararlı olmayan alanlar içeren bir form oluşturmak. ile gerçekten mümkün olan bir form tanımlamak için miras olarak mümkün olsa da, bazen sadece mevcut bir formun ince ayarlanması gereklidir. Neyse ki, alanlara sahip olabilir formları del anahtar sözcüğünü kullanarak sonrası örnekleme kaldırıldı:

class MagazineIssueForm(Form): 
    title = TextField() 
    year = IntegerField('Year') 
    month = SelectField(choices=MONTHS) 

def edit_issue(): 
    publication = get_something_from_db() 
    form = MagazineIssueForm(...) 

    if publication.frequency == 'annual': 
     del form.month` 
+0

Teşekkürler. Ama alanı devre dışı bırakmak istiyorum, silmek değil. – sixarm

+0

Ah üzgünüm - Yanlış anladım. Engellemeyi nasıl kastediyorsun? Görüntülemek ancak bunu yapmak için alan değiştirilemez mi? – Ewan

+0

Bu başka bir soruya çok benzer ve ben de orada ayrıntılı bir cevap yazdım: http://stackoverflow.com/a/16576294/244393 – Crast

5

O @Bibhas önerdiği neredeyse bu. Ben doğru anlamak ve html devre dışı özelliğiyle bir alan devre dışı bırakmak istiyorsanız , o zaman benim için çalıştı aşağıdaki:

form.field(disabled=True) 

Bu cevap biraz geç olabilir ama Herhangi bir kimse bu sorunu varsa o yardımcı olabilir.

3

vim forms.py:

add_time = DateTimeField(

    '添加时间', 
    format='%Y-%m-%d %H:%M:%S', 
    default=datetime.datetime.now(), 
    # I use bs3,and it well add input an attribute disabled 
    render_kw={'disabled':''}, 
    validators=[DataRequired()], 
) 
+0

Bunun için teşekkürler! Benim durumumda, bu form zaten çoktan örneklenmişti, ben de sadece form.my_field.render_kw = {'disabled': 'disabled'} 'yaptım. – elethan

İlgili konular