나는 다음과 같이 설정 내 수업을했습니다 :장고 인라인의 formset 설정
class InspectionGroup(models.Model):
group = models.CharField(max_length=50)
class InspectionItem(models.Model):
group = models.ForeignKey(InspectionGroup)
item = models.CharField(max_length=50)
class InspectionQuestion(models.Model):
item = models.ForeignKey(InspectionItem)
question = models.CharField(max_length=200)
question_pass = models.BooleanField()
class InspectionResult(models.Model):
question = models.ForeignKey(InspectionQuestion)
vehicle = models.ForeignKey(Vehicle)
result = models.BooleanField()
submitted_by = models.ForeignKey(User, editable=False)
date_time_submitted = models.DateTimeField(default=datetime.today,
editable=False)
내가하고 싶은 것은 그들이되게됩니다 해당 그룹에서 다음, 사용자가 검사 그룹을 선택하는 것입니다 모든 해당 그룹의 질문을 템플릿의 그룹화에 사용되는 항목 헤더와 함께 표시합니다. 그런 다음 질문에 답변하고 결과를 게시합니다.
제 문제는 이것을 해결하는 것입니다. 몇 가지 코드로 시작 했었지만 제대로 된 것 같지 않습니다.
forms.py
QuestionFormSet = inlineformset_factory(InspectionItem, InspectionQuestion,
form=QuestionForm, extra=0, can_delete=False)
class BaseInspectionFormset(BaseInlineFormSet):
def add_fields(self, form, index):
# allow the super class to create the fields as usual
super(BaseInspectionFormset, self).add_fields(form, index)
# created the nested formset
try:
instance = self.get_queryset()[index]
pk_value = instance.pk
except IndexError:
instance=None
pk_value = hash(form.prefix)
# store the formset in the .nested property
form.nested = [QuestionFormSet (instance = instance,
prefix = 'INSPECTIONQUESTIONS_%s' % pk_value)]
InspectionFormset = inlineformset_factory(InspectionGroup, InspectionItem,
formset=BaseInspectionFormset, extra=0, can_delete=False)
view.py
def vehicle_inspection(request, stock_number, id):
vehicle = get_object_or_404(Vehicle, stock_number=stock_number)
group = get_object_or_404(InspectionGroup, pk=id)
if request.method == 'POST':
formset = InspectionFormset(request.POST, instance=group)
if formset.is_valid():
results = formset.save_all()
return HttpResponseRedirect(reverse('inspectionRecord',
kwargs={'stock_number': stock_number}))
else:
formset = InspectionFormset(instance=group)
return render_to_response('vehicles-inspection-form.html', {
'formset': formset})
이 아이디어가 효과가 있거나 내가 원하는 기능을 갖추려면 누군가해야하는지 확인할 수 있습니까? 현재 내가이 오류 받고 있어요 : 나는 그러나이 링크 from readthedocs
에 따라 위의 오류를 해결하기 위해 관리했습니다 1
[u'ManagementForm data is missing or has been tampered with']
업데이트를 지금 현재, 해당 formset 이후 비어 보인다 템플릿에는 제출 버튼 만 표시됩니다.
<form action="." method="POST" id="inspection_form">
{% csrf_token %}
<div id="form">
{{ formset.management_form }}
{% for form in formset.forms %}
{{ form }}
{% if form.nested %}
{% for formset in form.nested %}
{{ formset.as_table }}
{% endfor %}
{% endif %}
{% endfor %}
</div>
<div class="form_buttons">
<button type="submit" name="confirm" id="confirm">
<span>Submit</span>
</button>
</div>
</form>
지금 어떤 문제가있을 수 있습니까? https://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform
편집 : for form in formset
대신 formset.forms
위의 링크는 처음 오류가 발생했을 때 실제로 문제를 지적하지 않았습니다. 이 [link] (http://readthedocs.org/docs/django/en/latest/releases/1.3.html#formset-updates)는 –
에게 감사했지만. 나는 나의 대답을 업데이트했다. – akonsu
formset 아이디어가 나를 위해 밖으로 작동하지 않는 것 같아요 ... 귀하의 의견에 올바른 코드가 무엇입니까? 제안 된 변경 사항이 있더라도 양식은 여전히 비어 있습니다. formset 메소드에 대한 대안이 있다는 것을 알고 있다면, 그것은 또한 –