django:如何在formwizard中使用inlineformset?

| 我正在显示两个单独的示例项目。第一个是与Contact有关的,并显示了使用formwizard的原理。第二个是配方相关项目的成分,该项目显示了如何在表单中使用内联。我希望内联线以我的形式出现在常规窗体中。 我有一个formwizard多步骤表单工作。它基于此处的示例。我已对其稍作更改以使用modelform。 models.py
from django.db import models

# Create your models here.
class Contact(models.Model):
    subject = models.CharField(max_length=50)
    sender = models.EmailField()

    def __unicode__(self):
        return self.subject

class Contact2(models.Model):
    message = models.TextField(max_length=500)

    def __unicode__(self):
        return self.message
表格
class ContactForm1(forms.ModelForm):
    class Meta:
        model = Contact

class ContactForm2(forms.ModelForm):
    class Meta:
        model = Contact2

class ContactWizard(FormWizard):
    @property
    def __name__(self):
        return self.__class__.__name__

    def done(self, request, form_list):
#        do_something_with_the_form_data(form_list)
        return HttpResponseRedirect(\'/done/\')
urls.py
(r\'^contact/$\', ContactWizard([ContactForm1, ContactForm2])),
另外,我有内联被生成为另一种形式。我正在通过inlineformset_factory进行此操作。这未与上面的formwizard示例连接。这是配方示例的组成部分。 我这样做是: views.py
def add(request):
    IngredientFormSet = inlineformset_factory(Recipe, Ingredient, 
                fk_name=\"recipe\", 
                formfield_callback=curry(ingredient_form_callback, None))

    if request.method == \'POST\':
        form = RecipeForm(request.POST)
        formset = IngredientFormSet(request.POST)
        if form.is_valid() and formset.is_valid():
            recipe = form.save()
            formset = IngredientFormSet(request.POST, instance=recipe)            
            formset.save()
            return redirect(\"/edit/%s\" % recipe.id)
    else:
        form = RecipeForm()
        formset = IngredientFormSet()

    return render_to_response(\"recipes_add.html\", {\"form\":form, \"formsets\":formset}, context_instance=RequestContext(request))
recipes_add.html
<form method=\"post\">
{% csrf_token %}
    <table>
    {{ form }}
    </table>
    <hr>
    <h3>Ingredients</h3>
    <div class=\"inline-group\">
      <div class=\"tabular inline-related last-related\">
          {{ formsets.management_form }}
          {% for formset in formsets.forms %}
          <table>
              {{ formset }}
          </table>
          {% endfor %}
      </div>
    </div>
    <p class=\"success tools\"><a href=\"#\" class=\"add\">Add another row</a></p>
    <input type=\"submit\" value=\"Add\">
</form>
如何使内联在Formwizard多步骤表单中工作? 现在,models.py看起来像这样,因为我希望书籍可以是内联的。我希望内联位于我的formwizard的第一步。然后执行步骤2并完成。
from django.db import models

# Create your models here.
class Contact(models.Model):
    subject = models.CharField(max_length=50)
    sender = models.EmailField()

    def __unicode__(self):
        return self.subject

class Contact2(models.Model):
    message = models.TextField(max_length=500)

    def __unicode__(self):
        return self.message

class Book(models.Model):
   author = models.ForeignKey(Contact)
   title = models.CharField(max_length=100)
    
已邀请:
        Django(1.4版以下)中包含的formwizard不支持表单集。从1.4版开始,会有更好的实现(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/) 回到您的问题,如果您等不及下一个Django版本-我想-您可以坚持使用django-formwizard。最新版本(1.0)与即将到来的Django formwizard兼容。 使用新的formwizard实现,您可以像使用普通Forms一样使用FormSet。     

要回复问题请先登录注册