Django 在 forms.py 中使用来自视图或 url 的变量
Django use variable from view or url in forms.py
可以在forms.py中使用变量吗?我正在使用带有基于平台模型查询集的选项的字段。我的 url 和视图包含此 ID,但我不知道如何将其提供给 forms.py 我的查询集。
forms.py:
class OrderCreateForm(forms.ModelForm):
platform = forms.CharField(choices=Platform.objects.filter(client_id=variable_from_view_or_url).values_list('id', 'name').order_by('id'))
class Meta:
model = Order
fields = ('price', 'deadline', 'finished', 'client', 'platform')
view.py:
@user_passes_test(lambda u: u.is_staff, login_url='/account/login/')
def order_create(request, request_client_id):
dict = {}
dict['form_order'] = OrderCreateForm()
return render(request, 'panel/order/form.html', dict)
是也不是。
你做不到,但你可以在表单的 init 方法中定义选项
def __init__(self, client_id, *args, **kwargs):
super(OrderCreateForm, self).__init__(*args, **kwargs)
self.fields['platform'].choices = Platform.objects.filter(client_id=client_id).values_list('id', 'name').order_by('id')
然后用 id 调用它
OrderCreateForm(request_client_id)
可以在forms.py中使用变量吗?我正在使用带有基于平台模型查询集的选项的字段。我的 url 和视图包含此 ID,但我不知道如何将其提供给 forms.py 我的查询集。
forms.py:
class OrderCreateForm(forms.ModelForm):
platform = forms.CharField(choices=Platform.objects.filter(client_id=variable_from_view_or_url).values_list('id', 'name').order_by('id'))
class Meta:
model = Order
fields = ('price', 'deadline', 'finished', 'client', 'platform')
view.py:
@user_passes_test(lambda u: u.is_staff, login_url='/account/login/')
def order_create(request, request_client_id):
dict = {}
dict['form_order'] = OrderCreateForm()
return render(request, 'panel/order/form.html', dict)
是也不是。
你做不到,但你可以在表单的 init 方法中定义选项
def __init__(self, client_id, *args, **kwargs):
super(OrderCreateForm, self).__init__(*args, **kwargs)
self.fields['platform'].choices = Platform.objects.filter(client_id=client_id).values_list('id', 'name').order_by('id')
然后用 id 调用它
OrderCreateForm(request_client_id)