python - 如何使用 django 创建一个 View 来记录数据库中 ModelMultipleChoiceField 表单的数据?

标签 python django python-3.x

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

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

表单.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()
        )

模型.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 目录

并从此命令行创建 super 用户 python 管理.py createsuperuser 输入用户名和电子邮件并通过 然后转到http://127.0.0.1:8000/admin并登录 并转到http://127.0.0.1:8000/a **

关于python - 如何使用 django 创建一个 View 来记录数据库中 ModelMultipleChoiceField 表单的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767615/

相关文章:

python - 填充 Float Column 的 np.nan 条目会给出 ValueError : fill value must be in categories

python - 弃用警告 : invalid escape sequence - what to use instead of\d?

python - 如何完全卸载使用 easy_install 安装的 pip?

python - Pyramid 响应完成后如何执行方法?

python - 在 PythonAnywhere 中使用 Virtualenv 时错误的 Python 版本

python-3.x - 在 Python 3 中使用集合模块

python - scipy.stat.norm.pdf 加起来不等于一

python - django 自定义模型管理器抛出错误

django - 如何获取 FileField 中文件的链接?

python - 使用 Python 结合 asyncio 进行 Web 抓取