2014-01-05 220 views
0

我有2個下拉菜單。Django - 根據另一個下拉菜單限制下拉選項

首先下拉請求類型。

我有第二個下拉菜單顯示來自另一個模型的值。

我需要的是,如果第一個下拉爲類型:qualif,我只想顯示第二個下拉的pk = 1。

這是我到目前爲止有:

name = models.CharField(max_length=40,verbose_name="nom") 
type = models.CharField(max_length=6,choices=TYPE_CHOICES) 
division = models.ForeignKey(Division,verbose_name="division") 

class TournamentForm(forms.ModelForm): 

def clean(self): 
    super(TournamentForm, self).clean() #if necessary 
    if 'division' in self._errors: 
     """  
      reset the value (something like this i 
      think to set the value b/c it doesnt get set 
      b/c the field fails validation initially) 
     """ 
     if self.data['type'] == 'qualif': 
      division = Division.objects.get(pk=1) 
      self.division = division 

     # remove the error 
     del self._errors['division'] 

    return self.cleaned_data 

    # Register your models here. 
    class TournamentAdmin(reversion.VersionAdmin): 
form = TournamentForm 
list_display = ('name', 'date', 'division', 'gender') 
ordering = ('date', 'name') 
list_filter = ['date', 'season', 'division', 'gender'] 

    admin.site.register(Tournament, TournamentAdmin) 

我從另一個棧的問題閱讀使用清潔......但遺憾的是它不工作...

編輯: 細算@ Mardo的鏈接,我嘗試加載一個靜態文件。

這裏是我的文件夾設置:

的myproject /靜態/管理/ JS/myfile.js

這在我的settings.py

STATIC_URL = '/靜態/'

但它一直說文件沒有找到...

謝謝, 阿拉

+0

可能更簡單的做客戶端。將所有可能的值與某種映射一起發送到網頁,然後在第一個下拉列表更改時使用javascript或jquery重新填充第二個下拉列表。 – jarmod

+1

我幾天前發佈了一個類似的問題。我正在尋找一個'concetptual'的答案,一個指導,瞭解django關於這些東西的可能性。答案很清楚,我認爲它也會對你有所幫助。 http://stackoverflow.com/questions/20753810/django-make-field-editable-depending-on-the-value-of-other-field – 2014-01-05 03:13:52

+0

@Marcos Modenesi,謝謝!我在加載資產文件時遇到了問題...我編輯了我的第一篇文章以顯示文件夾設置。 –

回答

0

做兩種形式。首先只有第一個下拉菜單,第二個是禁用的。在選擇值提交表單並基於第一個呈現完整版本。

相關問題