I use a ModelMultipleChoiceField form in my website, because it helps me check the presence of users (employees) at work or not.
But I don't understand how can I recover the data from my form to write them in my model (database).
form.py :
class HoursDeclarationForm(forms.Form):
number_of_hours = forms.FloatField(required=True)
presense = forms.ModelMultipleChoiceField(
queryset=User.objects.all(),
widget=forms.CheckboxSelectMultiple
)
views.py :
from django.contrib.auth.models import User
from registration.models import UserExtention
def hours_declaration (request):
form = HoursDeclarationForm(request.POST or None)
if form.is_valid():
number_of_hours = form.cleaned_data['number_of_hours']
presence = form.cleaned_data['presence']
for user in presence :
#this is the part I can not achieve
return render (
request,
'HoursDeclaration/hours_declaration.html'
, locals()
)
models.py :
class UserExtention (models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE, null=True, verbose_name='utilisateur')
town = models.CharField (max_length=50, null=True, blank=True, verbose_name='ville')
address = models.CharField (max_length=500, null=True, blank=True, verbose_name='adresse')
hours_number = models.IntegerField (null=True, blank=True, verbose_name="nombre d'heure effectuée par le salarié")
Thank you for your answer !
I am very sorry but your question is not clear but you correct the code you can always edit the question
in models.py
class UserExtention (models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE, null=True, verbose_name='utilisateur')
town = models.CharField (max_length=50, null=True, blank=True, verbose_name='ville')
address = models.CharField (max_length=500, null=True, blank=True, verbose_name='adresse')
hours_number = models.IntegerField (null=True, blank=True, verbose_name="nombre d'heure effectuée par le salarié")
in form.py
from django import forms
from django.contrib.auth.models import User
class HoursDeclarationForm(forms.Form):
number_of_hours = forms.FloatField(required=True)
presense = forms.ModelMultipleChoiceField(
queryset=User.objects.all(),
widget=forms.CheckboxSelectMultiple
)
in views.py
def hours_declaration(request):
form = HoursDeclarationForm(request.POST or None)
if form.is_valid():
presence="a"
number_of_hours ="3"
form = HoursDeclarationForm
if form.is_valid():
number_of_hours = form.cleaned_data['number_of_hours']
presence = form.cleaned_data['presence']
for user in presence:
print(user)
# this is the part I can not achieve
contex = {
'a': form,
}
return render(request, "hours_declaration.html",contex)
in urls.py
urlpatterns = [
path('a', views.hours_declaration, name='index'),
path('admin/', admin.site.urls),
]
in hours_declaration.html
<html>
<body>
{{a}}
</body>
</html>
**you dont need HoursDeclaration dir
and create super user from this commend line python manage.py createsuperuser enter user name and email and pass then go to http://127.0.0.1:8000/admin and sign in and go to http://127.0.0.1:8000/a**
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With