DJANGO - 如何在表单内部访问当前模型实例

0 投票
2 回答
1069 浏览
提问于 2025-04-15 12:28
class EditAdminForm(forms.ModelForm):
    password = username.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())
    password_confirm = forms.CharField(widget=forms.PasswordInput(), initial=???)

你可以看到我在这里想做什么。我该怎么做才能提前填充密码确认字段(这个字段不在模型里)。我感到很困惑。

2 个回答

0

你可以在 EditAdminForm 里定义一个 __init__ 方法。

大概可以这样写:

class EditAdminForm(forms.ModelForm):
    username = forms.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())
    def __init__(self, initial_from, data=None, initial=None)
        sefl.fields['password_confirm'] = forms.CharField(widget=forms.PasswordInput(), initial=initial_from)
2

在你声明表单的时候,无法访问实例,因为在你创建实例之前,它是不存在的。

不过,如果你只是想设置一些动态的初始数据,可以在创建实例的时候使用 initial 参数来做到这一点:

form = EditAdminForm(initial={'password':'abcdef'})

撰写回答