3

ModelForm2つのモデルを持つテストフォームを作成しています。

  1. Country
  2. Email

モデルに基づいてフォームを作成していEmailます。モデルには名前フィールドがあり、Country値はCOUNTRIESリストで指定されます。EmailForm名前フィールドをすべてのCOUNTRIES値とともに表示したい。外部キーを使用する必要がありますか? ガイドしてください。

私のモデルは次のようになります。

COUNTRIES = (('IND', 'India'), ('PAK', 'Pakistan'), ('AMR', 'America'))

class Country(models.Model):
    name = models.CharField(max_length=3, choices=COUNTRIES)

class Email(models.Model):
    title = models.CharField(max_length=50)
    country = models.ForeignKey('Country')
    sender = models.EmailField(max_length=20)
    date = models.DateTimeField()
    text = models.CharField(max_length=20)

class EmailForm(ModelForm):
    class Meta:
        model = Email

これからフォームを生成する場合。空白のドロップダウンメニューが表示されます。リストから値を取得するには?

4

2 に答える 2

5

ModelFormにカスタムフィールドを追加し、元の外部キーを除外したい場合があります。

class EmailForm(forms.ModelForm):
    country_name = forms.CharField()

    class Meta:
        model = YourModel
        exclude = ('country',)

次に、ビューで、会社を手動で作成(または存在する場合は取得)して、フォームを保存する必要があります。

def foo(request):
    if request.method == 'POST':
        form = EmailForm(request.POST)
        if form.is_valid():
            form.instance.country = Country.objects.get_or_create(cname=form.cleaned_data['country_name'])
            form.save()
于 2012-08-13T11:53:30.613 に答える
0

答えはおそらくこの投稿Django - Display a ModelForm external key fieldにあると思います

ただし、まだうまく機能させることができていません。

于 2015-03-17T08:44:33.510 に答える