我在网站中使用 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/