以django模型形式设置初始值
Set initial value in django model form
我想以模型形式设置初始数据,我该怎么做?
我一直在寻找答案,但大多数答案是使用 initial 或 instance in view。
有没有办法让我们可以在模型表单中初始化表单字段?
views.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})
forms.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}),
}
谢谢。
class CreateOrderForm(forms.ModelForm):
# How to initialize value in this model form?
class Meta:
model = Order
fields = ['user', 'products', 'quantity', 'address', 'total_price']
address = forms.CharField(
required = True,
widget = forms.TextInput(
attrs={
'class': 'form-control valid',
'name': 'address',
'id': 'address',
'onfocus': 'this.placeholder = ''',
'onblur': "this.placeholder = 'Enter Your Address'",
'id': 'address',
'type':'text',
'placeholder': 'sych as: dhaka, Bangladesh',
'value': 'dhaka, Bangladesh'
'required' : True
}
)
)
您可以通过这种方式设置值并添加 CSS 属性。
您可以覆盖 __init__
以获取您的字段,并像这样设置它们的 initial
:
class CreateOrderForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().init(*args, **kwargs)
self.fields['my_field'].initial = 'my_initial'
我想以模型形式设置初始数据,我该怎么做?
我一直在寻找答案,但大多数答案是使用 initial 或 instance in view。
有没有办法让我们可以在模型表单中初始化表单字段?
views.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})
forms.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}),
}
谢谢。
class CreateOrderForm(forms.ModelForm):
# How to initialize value in this model form?
class Meta:
model = Order
fields = ['user', 'products', 'quantity', 'address', 'total_price']
address = forms.CharField(
required = True,
widget = forms.TextInput(
attrs={
'class': 'form-control valid',
'name': 'address',
'id': 'address',
'onfocus': 'this.placeholder = ''',
'onblur': "this.placeholder = 'Enter Your Address'",
'id': 'address',
'type':'text',
'placeholder': 'sych as: dhaka, Bangladesh',
'value': 'dhaka, Bangladesh'
'required' : True
}
)
)
您可以通过这种方式设置值并添加 CSS 属性。
您可以覆盖 __init__
以获取您的字段,并像这样设置它们的 initial
:
class CreateOrderForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().init(*args, **kwargs)
self.fields['my_field'].initial = 'my_initial'