python - 以 django 模型形式设置初始值
问题描述
我想以模型形式设置初始数据,我该怎么做?
我一直在寻找答案,但大多数答案是在视图中使用初始或实例。
有没有办法让我们可以在模型表单中初始化表单字段?
视图.py
def create_order(request, *args, **kwargs):
# move this thing into model form
initial_data = {
'user': request.user.username,
'products': Product.objects.get(pk=kwargs['pk'])
}
form = CreateOrderForm(request.POST or None, initial=initial_data)
if form.is_valid():
form.save()
return redirect('homepage')
return render(request, "orders/create_order.html", {"form": form})
表格.py
class CreateOrderForm(forms.ModelForm):
# How to initialize value in this model form?
class Meta:
model = Order
fields = ['user', 'products', 'quantity', 'address', 'total_price']
widgets = {
# Make user fields disabled
'user': forms.TextInput(attrs={'disabled': True}),
}
谢谢你。
解决方案
您可以覆盖__init__
以获取您的字段,并initial
像这样设置它们:
class CreateOrderForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().init(*args, **kwargs)
self.fields['my_field'].initial = 'my_initial'
推荐阅读
- rpgle - 如何在没有事先输入的情况下遇到错误 UPDATE 和 DELETE WHEN 想要更新到 RPGLE 中的 SUBFILE
- python - 为什么这段代码运行正确?(python 全局关键字)
- c# - 如何将具有不同配置的第二个 eventthub 客户端注入我的 Azure 函数?
- python - 如何获取重定向的 URL?
- connection - Aws 与 Teradata 的胶水连接
- terraform - 如何为 EC2、安全组和 ebs 卷进行 for_each 和 for 循环?
- three.js - Threejs加载JSON格式模型点击标记点局部变色问题
- asp.net-core - 拥有具有 2 个不同模型属性的 .net 核心项目
- visual-studio-code - VS Code拆分视图可以在来回时将光标“锁定”在同一个拆分上吗?
- java - jvm args JAVA_TOOL_OPTIONS:'-Djdk.attach.allowAttachSelf=true' 到 CloudFormation 模板-AWS lambda 函数-无法附加到 VM 和加载代理