- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个模型如下。
class Profile(models.Model):
user = models.OneToOneField(User)
middle_name = models.CharField(max_length=30, blank=True, null=True)
我在 ModelForm 中有一个自定义字段 email
class ProfileForm(ModelForm):
email = forms.CharField()
class Meta:
model = models.Profile
fields = ('email', 'middle_name')
在设置上述模型表单的实例时,数据会预先填充到编辑模板的表单中,如下所示。
def edit_profile(request):
profile = models.Profile.objects.get(user=request.user)
profileform = forms.ProfileForm(instance=profile)
return render_to_response('edit.html', { 'form' : 'profileform' }, context_instance=RequestContext(request))
现在在表单中,我为配置文件模型下的所有字段预填充了所有值,但自定义字段为空,这很有意义。
但是有什么方法可以预填充自定义字段的值吗?也许是这样的:
email = forms.CharField(value = models.Profile.user.email)
最佳答案
我可以推荐其他东西吗?我不太喜欢在 Profile
的 ModelForm 中包含 email
字段,如果它与该模型无关的话。
相反,只拥有两种形式并将初始数据传递给包含 email
的自定义形式怎么样?所以事情看起来像这样:
# this name may not fit your needs if you have more fields, but you get the idea
class UserEmailForm(forms.Form):
email = forms.CharField()
profile = models.Profile.objects.get(user=request.user)
profileform = forms.ProfileForm(instance=profile)
user_emailform = forms.UserEmailForm(initial={'email': profile.user.email})
然后,您要验证个人资料和用户电子邮件表单,但其他方面基本相同。
我假设您没有在 Profile ModelForm 和这个 UserEmailForm 之间共享逻辑。如果您需要配置文件实例数据,您可以随时将其传递到那里。
我更喜欢这种方法,因为它不那么神奇,如果你在一年后回顾你的代码,你不会想知道为什么,简单地扫描一下,为什么 email
是 ModelForm
当它不作为该模型上的字段存在时。
关于python - 如何在 ModelForm 的自定义表单字段中预填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972201/
我尝试通过正则表达式将文本中的单引号更改为双引号。 (单字)示例:我走了。 You gona fly to planet 'Ziqtos' => 我需要在 I'm 中保留单引号,并在 You gona
我正在构建一个 API,其中大部分将包含 JSON 和 HTML 内容。但是一些非常具体的端点只呈现 true 或 false,并且还在 POST 中接受 true 或 false。这是请求或响应的整
我是一名优秀的程序员,十分优秀!