简体   繁体   English

带有外键字段列表的Django表单

[英]Django form with list of foreign key fields

I have the below models for which I'm trying to create a form for: 我正在尝试为其创建以下表单的以下模型:

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()

I'd like a single form that allows the user to enter a title and publish_date for the letter, and in the same form enter multiple recipients by name and rating. 我想要一个表格,允许用户输入标题和字母的publish_date,并在同一表格中按名称和等级输入多个收件人。

Can anyone help with creating the form model for this? 任何人都可以帮助创建表单模型吗? I can't figure out how to have django generate this form using {{ form.as_p }} . 我不知道如何让django使用{{ form.as_p }}生成此表单。 I think I'll have to use jQuery to create the additional recipient rows on the HTML page, but how would I get django to parse those into the model? 我认为我将不得不使用jQuery在HTML页面上创建其他收件人行,但是如何让django将这些行解析为模型?

Any help would be greatly appreciated. 任何帮助将不胜感激。

Thanks. 谢谢。 Ark 方舟

Ark, you can use ModelMultipleChoiceField in Django form. 方舟,您可以使用Django形式的ModelMultipleChoiceField Here are some roughly example. 这是一些大概的例子。 I create "posts" apps just for quick testing : 我创建“帖子”应用程序只是为了快速测试:

forms.py 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 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 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 的index.html

{% load url from future %}

{{ form.as_p }}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django表单:来自外键的引用字段 - Django form: reference fields from foreign key Django-基于外键的动态表单字段 - Django - Dynamic form fields based on foreign key 如何使用 Django Rest Framework 中的 SerializerMethodField 以原始形式返回列表外键字段? - How to return a list foreign key fields in a raw form using SerializerMethodField in Django Rest Framework? 未显示外键字段的外键 - Django - Foreign key of foreign key fields are not shown - Django 如何在实际表单验证中取外键字段,DJANGO - how to take foreign key fields in actual form validation, DJANGO Django CreateView:在一个表单中自动设置两个外键字段 - Django CreateView: automatically set two foreign key fields in a form Django的。 从表单对象访问模板中的外键字段 - Django. Access the foreign key fields in the template from a form object django values_list中的所有字段的外键 - django values_list of all fields in foreign key Django Admin - 表格内联外键字段列表的动态值 - Django Admin - Dynamic value for a list of tabular inline foreign key fields 通过遍历多个关系过滤 Django 表单字段(外键到外键?) - Filtering Django form fields by traversing more than one relationship (foreign key to foreign key?)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM