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 }}. 我想我必须使用 jQuery 在 HTML 页面上创建额外的收件人行,但是我如何让 django 将它们解析到模型中?

任何帮助将不胜感激。

谢谢。方舟

4

1 回答 1

6

方舟,你可以使用Django 形式的ModelMultipleChoiceField。这里有一些粗略的例子。我创建“帖子”应用程序只是为了快速测试:

表格.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()
                                        )

模型.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

视图.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)

索引.html

{% load url from future %}

{{ form.as_p }}
于 2012-05-31T03:15:51.693 回答