如何创建一个视图,使用Django从数据库中的ModelMultipleChoiceField表单记录数据? - python

我在网站上使用ModelMultipleChoiceField表单,因为它可以帮助我检查用户(员工)是否在工作。

但是我不明白如何从表单中恢复数据以将其写入模型(数据库)中。

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é")

谢谢您的回答 !

参考方案

非常抱歉,您的问题尚不清楚,但是您更正了代码后就可以随时编辑问题

在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é")

在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
    )

在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)

在urls.py中

urlpatterns = [
path('a', views.hours_declaration, name='index'),
path('admin/', admin.site.urls),

]

在hours_declaration.html中

<html>
<body>
{{a}}
</body>
</html>

**您不需要HoursDeclaration目录

并从此推荐行中创建超级用户
python manage.py createsuperuser
输入用户名和电子邮件并通过
然后转到http://127.0.0.1:8000/admin并登录
并转到http://127.0.0.1:8000/a **

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

如何用'-'解析字符串到节点js本地脚本? - python

我正在使用本地节点js脚本来处理字符串。我陷入了将'-'字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Matplotlib'粗体'字体 - python

跟随this example:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label in enumerate(('A', 'B', 'C', 'D')): ax = f…