如何解决Django ModelForm Widget 属性在 HTML
让 Django 将小部件呈现为具有正确属性的 html 元素的正确方法是什么? 按照文档,我为我的班级做了以下工作:
课程:
class UserProfileInfo(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to='TravelsApp/profile_pics',blank=True)
phone_number = models.CharField()
credits = models.PositiveIntegerField(default=10)
exp_date = models.DateField(default = timezone.now)
..... 表格
class UserProfileInfoForm(forms.ModelForm):
class Meta():
model = UserProfileInfo
fields = ('profile_pic','phone_number','exp_date')
widgets = {
'profile_pic': forms.ClearableFileInput(attrs={'class': "w3-btn w3-blue w3-center"}),'phone_number': forms.TextInput(attrs={'class': "w3-input",'required':'True'}),'exp_date': forms.DateInput(attrs={'class': "w3-input",'required':'False','disabled': 'True'}),}
.......
查看:
def register(request):
.......
# GET: Just render the forms as blank.
user_form = UserForm()
profile_form = UserProfileInfoForm()
return render(request,'TravelsApp/registration.html',{'user_form':user_form,'profile_form':profile_form,})
当调用 register() 并且执行 #GET 后的代码时,'exp_date' UserProfileInfoForm 未正确呈现:
HTML:
<p><label for="id_exp_date">Exp date:</label> <input type="text" name="exp_date" value="2021-07-21" class="w3-input" disabled="True" required id="id_exp_date">
<input type="hidden" name="initial-exp_date" value="2021-07-21 20:06:53+00:00" id="initial-id_exp_date"></p>
属性 'required' 存在(因此意味着 required = true),而它应该设置为 false (它还会生成这个隐藏的“initial-exp-date”,我认为它只是出于安全原因添加的)
我尝试了一个漫长的晚上,然后我注意到如果我更改表单定义,从“字段”列表中删除“exp_date”并将其添加为“元”之前的字段,那么结果是正确的:
class UserProfileInfoForm(forms.ModelForm):
exp_date = forms.DateField(required=False,widget = forms.DateInput(attrs={'class': "w3-input",'disabled': 'True'}))
class Meta():
model = UserProfileInfo
fields = ('profile_pic','phone_number')
widgets = {
'profile_pic': forms.ClearableFileInput(attrs={'class': "w3-btn w3-blue w3-center"}),}
HTML:
<p><label for="id_exp_date">Exp date:</label> <input type="text" name="exp_date" class="w3-input" disabled="True" required="False" id="id_exp_date"></p>
但我不明白为什么。 在文档中,似乎在“字段”列表中插入一个字段或直接作为类成员(在“元”之外)都应该能够控制小部件属性,但在我的情况下,行为完全不同......>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。