Du erstellst dir erst ein Model mit den Attributen wie Einheit, Bezeichnung und was du noch so alles persistieren möchtest in deiner models.py.
Code: Alles auswählen
class DeinModel(models.Model):
einheit = models.IntegerField()
bezeichnung = models.CharField(max_length=200)
Dann erstellst du eine Formularklasse in deinen forms.py
Code: Alles auswählen
class DeinFormular(forms.Form):
einheit = forms.IntegerField(label="Einheit", required=True)
bezeichnung = forms.CharField(label="bezeichnung", max_length=100, required=True)
Dann gibst du einen Endpunkt für deine Funktion in der urls.py an (sofern alles nach dem / an deine app weitergeleitet wird):
Code: Alles auswählen
path('dein_form_endpunkt/', views.dein_form_endpunkt, name='dein_form_endpunkt'),
Dann kannst du in deiner views.py deine Funktion bauen, was ungefähr wie folgt aussehen kann:
Code: Alles auswählen
def dein_form_endpunkt(request):
if request.method == "POST":
form = DeinFormular(data=request.POST)
if form.is_valid():
einheit = form.cleaned_data['einheit']
bezeichnung = form.cleaned_data['bezeichnung']
dein_neues_datenobjekt = DeinModel(einheit=einheit, bezeichnung=bezeichnung)
dein_neues_datenobjekt.save()
form = DeinFormular()
else:
form = DeinFormular()
action_endpoint = "/dein_form_endpunkt/"
return render(request, "deine_app/forms.html", {"form": form, "action_endpoint": action_endpoint})
dein forms.html muss natürlich noch deine form anzeigen (mit bootstrap angereichert und mit cripy forms dargestellt):
Code: Alles auswählen
{% extends 'deine_app/base.html' %}
{% block content %}
{% load crispy_forms_tags %}
<div class="container mt-5">
<div class="row justify-content-md-center">
<div class="col col-lg-4">
<h2 class="mb-5">Das ist dein Formular</h2>
<form method="POST" class="form-group" action="{{action_endpoint}}">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" class="btn btn-secondary" value="Bestätigen">
</form>
</div>
</div>
</div>
{% endblock %}
schau hier mal TechWithTim:
https://www.youtube.com/watch?v=vM9mcWr1RMg