代码之家  ›  专栏  ›  技术社区  ›  FernandoEscher

Django-使用多种形式

  •  23
  • FernandoEscher  · 技术社区  · 16 年前

    我要做的是在一个页面中管理多个表单,我知道有表单集,我知道表单管理是如何工作的,但是我的想法有一些问题。

    为了帮助您想象我的问题是什么,我将使用django示例模型:

    from django.db import models
    
    class Poll(models.Model):
        question = models.CharField(max_length=200)
        pub_date = models.DateTimeField()
    
    class Choice(models.Model):
        poll = models.ForeignKey(Poll)
        choice = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
    

    现在,假设我已经做了表格分类:

    from django import forms
    from mysite.polls.models import Poll, Choice
    
    class PollForm(forms.ModelForm):
        class Meta:
            model = Poll
    
    class ChoiceForm(forms.ModelForm):
        class Meta:
            model = Choice
            exclude = ('poll',) 
    

    所以我想做的是在一个页面中有几个Poll and Choice模型的表单实例,但是请记住这些模型也可以重复:

    <form action="{{url}}" method="post">
        {{pollform}}
        {{choiceform}}
        {{pollform}}
    </form>
    

    我遇到的问题是,帖子中的值都是以“answer”的名称出现的,所以我以“answer”的名称得到了所有表单中所有元素的列表,并且我无法识别哪些元素属于每个表单。

    不知道这个解释是否能清楚地理解我的问题。有什么办法来完成这件事吗?

    谢谢你的帮助!

    PD:不要关注投票和选择之间的关系,那些模型只是为了澄清问题,所以这种关系根本不重要。

    1 回复  |  直到 16 年前
        1
  •  58
  •   Zach    16 年前

    使用 prefix 夸尔格

    您可以将您的表格声明为:

    form = MyFormClass(prefix='some_prefix')
    

    然后,只要前缀相同,处理数据如下:

    form = MyFormClass(request.POST, prefix='some_prefix')
    

    剩下的就交给Django了。

    推荐文章