2011-05-13 42 views
1

我有一個模型,它看起來像這樣多個文本框,並在數據庫基礎上值複選框(Django的)

ID,姓名,則isValue,價值

我想做什麼邏輯是這樣的通俗地說:

如果則isValue是假的,呈現一個文本框的用戶,以便他能在填補它,

否則,向用戶呈現一個複選框

在數據庫中,除「值」列外,所有這些列均填寫。我並不需要任何代碼,但是,如果有人能告訴我如何從這裏繼續前進,我很感激。

剛開始,我不確定是否可以將(isValue = false)對象傳遞給複選框小部件,並將(isValue = True)對象傳遞給文本框小部件,然後顯示它在我的模板上,只是不知道如何。我做了這樣的事情來分離對象。所以我想要的是顯示所有13個條目(例如,該表中有13個條目),其名稱和基於isValue的複選框/文本框。

checkboxx = [] 
textboxx = [] 

items = Items.objects.all() 
for i in items: 
     if i.isValue == False: 
      checkboxx.append(i) 
     else 
      textboxx.append(i) 

回答

1

使用自定義表單。然後在__init__方法中,根據您喜歡的任何評估,將Textarea或CheckboxInput小部件指定爲字段的小部件。

class MyModelForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 

     if self.instance.isValue: 
      self.fields['myfield'].widget = forms.Textarea() 
     else: 
      self.fields['myfield'].widget = forms.CheckboxInput() 

上面是一個簡化的例子。您必須修改以適應您的邏輯,但基本原則適用。

相關問題