Reputation: 53
The form in question won't render the form fields at all despite not raising any exceptions (which I'm assuming means the error is not a view or form error). So my question is, what else might cause such an error ? forms:
class HandInForm(forms.ModelForm):
class Meta:
model = AssignmentsHandedIn
fields = ['assignment', 'user_hand_in']
class ResourceForm(forms.ModelForm):
"""Form definition for File."""
class Meta:
"""Meta definition for Fileform."""
model = Resources
fields = ['file']
widgets = {
'file': forms.FileInput(attrs={"class": "form-control input"}),
}
view:
def hand_in(request, assignment_id):
assignment_actual = Assignments.objects.get(pk=assignment_id)
class_assignment = assignment_actual.class_related
if request.method == "POST":
assignment_form = HandInForm(data=request.POST)
resource_form = ResourceForm(data=request.POST)
if assignment_form.is_valid() and resource_form.is_valid():
assignment = assignment_form.save()
assignment.user_hand_in = request.user
assignment.assignment = assignment_actual
resource = resource_form.save()
resource.assignments = assignment
resource.class_related = class_assignment
else:
print(assignment_form.errors, resource_form.errors)
else:
assignment_form = HandInForm()
resource_form = ResourceForm()
return render(request, "DC/handin.html", {'assignment_form': assignment_form, 'resource_form': resource_form})
Template:
{% extends "DC/base.html" %}
{% block body_block %}
<br><br><br><br>
<h1 class="titley">New Resource</h1>
<form class="jumbotron" enctype="multipart/form-data" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary" name="button">Create</button>
</form>
<script>
var editor = new MediumEditor('.editable');
</script>
{% endblock body_block %
}
Upvotes: 0
Views: 87
Reputation: 8525
That's because you name your forms HandInForm()
ResourceForm()
respectively:
assignment_form = HandInForm()
resource_form = ResourceForm()
However, you use the name form
in templates
{{ form.as_p }}
use instead:
{{ assignment_form.as_p }}
{{ resource_form.as_p }}
Upvotes: 2
Reputation: 2966
Your view sends your form with different names.
{'assignment_form': assignment_form, 'resource_form': resource_form}
But you call form using form
. You should use your defined name. like
{{ assignment_form.as_p }}
, {{ resource_form.as_p }}
Upvotes: 0