2011-06-30 81 views
2

我在網上搜索了同樣的東西,並得到了很多答案,但一些如何與他們中的任何一個工作。Django下拉框從數據庫表列中填充

表:

  1. 報告:REPORTTYPE(從ReportCategory外鍵),名稱,描述
  2. 報告類別:名稱,描述

forms.py

class ReportForm_insert(forms.ModelForm):  
     class Meta:  
     model=Report 
     invent = ReportCategory.objects.all() 
     print invent 
     reportType_id = forms.ModelMultipleChoiceField(queryset = invent) 
     fields =('name','description',) 

model.py

現在
class ReportCategory(models.Model): 
     name = models.CharField(max_length=20) 
    description = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.name 

class Report(models.Model): 
    reportType = models.ForeignKey(ReportCategory) 
    name = models.CharField(max_length=200) 
    description = models.CharField(max_length=300) 

    def __unicode__(self): 
     return self.name 

,元類中我試圖做兩件事情:

首先,填充與 ReportCategory表的「名稱」列中的值報告類型下拉框中。 其次,當表格中的所有其他字段都由用戶 填充並按下該按鈕時,字段中的數據應該保存在報表中的 中,同時記住ReportCategory表中的 的外鍵約束。

回答

0

forms.py

class ReportForm_insert(forms.ModelForm): 
    class Meta: 
     model=Report 

這就是它。 Django自動理解,當我們在模型中將其聲明爲外鍵時,必須創建一個下拉列表。

2
reportType = models.CharField(max_length=200) 

應該是:

reportType = models.ForeignKey(ReportCategory) 

然後在ReportCategory模型添加:

def __unicode__(self): 
    return self.name 

那麼你的表格上,你不需要任何其他的東西

+0

我不這麼認爲,這將顯示在下拉框和只有文本框的形式的答案。此外,下拉框必須從ReportCategory表的'name'列中填充 – Compuser7

+0

模型表單上的ForeignKeys(默認情況下)顯示爲