Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a view that records the data from a ModelMultipleChoiceField form in database with django?

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 !

like image 780
Robin Joseph Avatar asked Sep 16 '25 04:09

Robin Joseph


1 Answers

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**

like image 160
Wassim Al Ahmad Avatar answered Sep 18 '25 22:09

Wassim Al Ahmad