2011-06-30 172 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(默认情况下)显示为