2011-06-30 8 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

ReportCategoryテーブルの 「名前」列の値を使用したレポートの種類]ドロップダウンボックスを移入、まず

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 

は今、メタクラスの中、私は二つのことをやろうとしています。 第2に、フォーム内の他のすべてのフィールドにユーザー が入力され、ボタンが押された場合、フィールド内のデータは ReportCategoryテーブルの の外部キー制約に留意してReportテーブルに保存されます。 。

答えて

0

。 Djangoは、モデルの外部キーとして宣言するときにドロップダウンが作成されなければならないことを自動的に理解します。

2
reportType = models.CharField(max_length=200) 

であるべき:

reportType = models.ForeignKey(ReportCategory) 

その後ReportCategoryモデルに追加:

def __unicode__(self): 
    return self.name 

は、その後、あなたのフォームに、あなたは他のもののいずれかを

+0

これは、ドロップダウンボックスとテキストボックスの形式で答えを表示するので、私は考えません。また、ReportCategoryテーブルの「名前」列からドロップダウンボックスを作成する必要があります – Compuser7

+0

モデルフォームのForeignKeysは、デフォルトで