2

フォームを作成しようとしている以下のモデルがあります。

class Letter(models.Model):
   title = models.CharField(max_length=100)
   publish_date = models.TimeField()

class LetterRecipients(models.Model):
   letter = models.ForeignKey(Letter)
   recipient_name = models.CharField(max_length=200)
   recipient_rating = models.IntegerField()
   has_responded = models.BooleanField()

ユーザーがレターのタイトルと公開日を入力できる単一のフォームが欲しいです。同じフォームに複数の受信者を名前と評価で入力します。

このためのフォームモデルの作成を手伝ってくれる人はいますか? を使用してdjangoにこのフォームを生成させる方法がわかりません{{ form.as_p }}。HTMLページに追加の受信者行を作成するにはjQueryを使用する必要があると思いますが、djangoでそれらをモデルに解析するにはどうすればよいですか?

どんな助けでも大歓迎です。

ありがとう。アーク

4

1 に答える 1

6

アーク、Django形式でModelMultipleChoiceFieldを使用できます。ここにいくつかの大まかな例があります。簡単なテストのためだけに「投稿」アプリを作成します。

forms.py

from django import forms
from django_test.posts.models import Letter, LetterRecipients


class LetterForm(forms.Form):
    title = forms.CharField()
    publish_date = forms.TimeField()
    recepient = forms.ModelMultipleChoiceField(
                                        queryset=LetterRecipients.objects.all()
                                        )

models.py

from django.db import models


class Letter(models.Model):
    title = models.CharField(max_length=100)
    publish_date = models.TimeField()


class LetterRecipients(models.Model):
    letter = models.ForeignKey(Letter)
    recipient_name = models.CharField(max_length=200)
    recipient_rating = models.IntegerField()
    has_responded = models.BooleanField()

    def __unicode__(self):
        return self.recipient_name

views.py

# Create your views here.
from django_test.posts.forms import LetterForm
from django.shortcuts import render


def index(request):
    form = LetterForm()
    data = {'form': form}

    return render(request, 'posts/index.html', data)

index.html

{% load url from future %}

{{ form.as_p }}
于 2012-05-31T03:15:51.693 に答える