私は各サイトが可能なカテゴリの範囲から選択された単一のカテゴリを持つDjangoアプリケーションを作成しています。だから私は2つのモデル:Site
とCategory
があります。ModelFormは選択肢ではなくForeignKeyテーブルの値を表示します
Site
とCategory
モデルの間に多対1の関係が必要です。 Category
テーブルにはさまざまなカテゴリの選択肢が含まれており、それぞれのSite
レコードには、これらのカテゴリの1つを参照する外部キーがあります。
models.py:
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible # for python 2 support
class Site(models.Model):
Category = models.ForeignKey('Category')
def __str__(self):
return self.Name
CATEGORY_CHOICES = (
('AU', 'Automobiles'),
('BE', 'Beauty Products'),
('GR', 'Groceries'),
)
class Category(models.Model):
Category = models.CharField(choices=CATEGORY_CHOICES,max_length=2)
def __str__(self):
return '%s' % (self.Category)
forms.py:
from django.forms import ModelForm
from sites.models import Site
class NewSiteForm(ModelForm):
class Meta:
model = Site
fields = ['Category']
newsite.html:
Newsite.htmlは私に既に格納された値を示していますカテゴリードロップダウンを与え<!DOCTYPE html>
<form method="post" action="">
{{ form}}
</form>
カテゴリー・モデルで定義されている選択肢タプルの内容をリストするのではなく、カテゴリー・データベースに追加します。私はこれを取得しています:
<!DOCTYPE html>
<form method="post" action="">
<tr><th><label for="id_Category">Category:</label></th><td><select id="id_Category" name="Category">
<option value="" selected="selected">---------</option>
<option value="1">AU</option>
<option value="2">BA</option>
<option value="3">BE</option>
<option value="4">BO</option>
<option value="5">PH</option>
<option value="6">CO</option>
<option value="7">CC</option>
<option value="8">CB</option>
<option value="9">CE</option>
<option value="10">CS</option>
<option value="11">CA</option>
<option value="12">EA</option>
<option value="13">EC</option>
<option value="14">FA</option>
<option value="15">GR</option>
<option value="16">HA</option>
<option value="17">HE</option>
<option value="18">HG</option>
<option value="19">IN</option>
<option value="20">JE</option>
<option value="21">LT</option>
<option value="22">MS</option>
<option value="23">MU</option>
<option value="24">MI</option>
<option value="25">OF</option>
<option value="26">OU</option>
<option value="27">PC</option>
<option value="28">SH</option>
<option value="29">SO</option>
<option value="30">SP</option>
<option value="31">TO</option>
<option value="32">TY</option>
<option value="33">DV</option>
<option value="34">CL</option>
<option value="35">WA</option>
<option value="36">WI</option>
</select></td></tr>
</form>
私はちょうどこのようなモデルで定義された3つの選択肢ではなく、データベースの内容、表示するフォームをしたい:私は何
<!DOCTYPE html>
<form method="post" action="">
<tr><th><label for="id_Category">Category:</label></th><td><select id="id_Category" name="Category">
<option value="" selected="selected">---------</option>
<option value="AU">Auto</option>
<option value="BE">Beauty Products</option>
<option value="GR">Groceries</option>
</select></td></tr>
</form>
をここで理解していないと私はどのようにこの作品を作るのですか?
(Category
テーブルに格納されているすべての二文字のエントリの読み込み可能な選択肢を与えることCATEGORY_CHOICES
でタプルがあることに注意してください、私はこの質問でそれらのすべてをリストしないことによって、スペースを節約しています)。
ありがとうございます。しかし、私が 'Site'を指定したのは、ModelFormを使用して' Site'モデルのすべてのフィールドを追加したかったからです。代わりに 'Category'を指定すると、私はそれをやめ、ModelFormは2つのモデルを一度に指定できるようには思えません。これを 'Site'フィールドのModelFormにして、' Category'フィールドに 'CATEGORY_CHOICES'を許可する方法はありますか? – RubyNoob