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)
没有找到相关结果
已邀请:
1 个回复
死狸蔽垂藐