使用 Django 4 进行编辑时,表单不会填充数据

发布于 2025-01-09 10:22:22 字数 3064 浏览 4 评论 0原文

我已经对我的用户类进行了覆盖,我添加了字段。 我制作了一个用于更新 User 类的字段的模板。 但问题是我只有一些字段有数据。 “名字,姓氏”

这是我编辑用户的视图:

# Vue de la page User (édition)
@staff_member_required(login_url='user_login')
def admin_users_edit(request, pk):
    if request.method == "POST":
        user = User.objects.get(id=pk)
        form = UserEditForm(instance=user, data=request.POST)
        if form.is_valid():
            user.save()
            messages.add_message(request, messages.SUCCESS, "L'utilisateur à bien été modifié")
            return redirect('admin_users_index')
        else:
            print(form)
            print("Invalid Form")
            print(form.errors)
            return redirect('admin_departements_index')
    else:
        user = User.objects.get(id=pk)
        form = UserEditForm(instance=user)
        return render(request, 'back/users/edit.html', {"user":user,"form":form})

这是我的表单,我尝试使用不同的解决方案渲染复选框,但单选按钮或复选框不会填充数据,它们在表单上为空。 。

# Formulaire de l'édition d'un utilisateur
YES_OR_NO = (
    (True, 'Oui'),
    (False, 'Non')
)
class UserEditForm(forms.ModelForm):
    username = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Pseudo','autocomplete':'off'}))
    first_name = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Prénom','autocomplete':'off'}))
    last_name = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Nom','autocomplete':'off'}))
    email = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Pseudo','autocomplete':'off'}))
    password = forms.CharField(label="", help_text="", widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Mot de passe','autocomplete':'off','required':'false'}))
    phone = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Téléphone fixe','autocomplete':'off'}))
    mobile = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Portable','autocomplete':'off'}))
    is_staff = forms.BooleanField(widget=CheckboxInput())
    is_active = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    newsletter = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    cgu = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    avatar = forms.FileField()
    class Meta:
        model = User
        fields = 'username','first_name','last_name','email','password',
        'phone','mobile','is_staff','is_active','newsletter','cgu',
        'avatar',

我在 django 文档上搜索没有成功,我不知道为什么,移动设备没有显示例如“is_staff”、“is_active”的复选框和收音机是空的...

谢谢

I have make an override on my User class, i have add fields.
I have make a template for update the fields of the User class.
But the problem is i have only some fields having a data. "Firstname, Lastname"

This is my views for editing an user:

# Vue de la page User (édition)
@staff_member_required(login_url='user_login')
def admin_users_edit(request, pk):
    if request.method == "POST":
        user = User.objects.get(id=pk)
        form = UserEditForm(instance=user, data=request.POST)
        if form.is_valid():
            user.save()
            messages.add_message(request, messages.SUCCESS, "L'utilisateur à bien été modifié")
            return redirect('admin_users_index')
        else:
            print(form)
            print("Invalid Form")
            print(form.errors)
            return redirect('admin_departements_index')
    else:
        user = User.objects.get(id=pk)
        form = UserEditForm(instance=user)
        return render(request, 'back/users/edit.html', {"user":user,"form":form})

And this is my forms, i have try to render the checkox with different solutions, but the radio or checkbox dont populate with the data, they are empty on the form...

# Formulaire de l'édition d'un utilisateur
YES_OR_NO = (
    (True, 'Oui'),
    (False, 'Non')
)
class UserEditForm(forms.ModelForm):
    username = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Pseudo','autocomplete':'off'}))
    first_name = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Prénom','autocomplete':'off'}))
    last_name = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Nom','autocomplete':'off'}))
    email = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Pseudo','autocomplete':'off'}))
    password = forms.CharField(label="", help_text="", widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Mot de passe','autocomplete':'off','required':'false'}))
    phone = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Téléphone fixe','autocomplete':'off'}))
    mobile = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Portable','autocomplete':'off'}))
    is_staff = forms.BooleanField(widget=CheckboxInput())
    is_active = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    newsletter = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    cgu = forms.BooleanField(widget=RadioSelect(attrs={'class': 'radio-primary'}, choices=YES_OR_NO), required=True)
    avatar = forms.FileField()
    class Meta:
        model = User
        fields = 'username','first_name','last_name','email','password',
        'phone','mobile','is_staff','is_active','newsletter','cgu',
        'avatar',

I have search on the docs of django with no success, i dont know why, the mobile is nos displying for example of the checkbox and the radio for 'is_staff', 'is_active' are empty...

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文