Django在forms.py中使用view或url中的变量

时间:2016-02-01 12:05:04

标签: django django-forms django-templates django-views

可以在forms.py中使用变量吗?我正在使用基于Platform模型的queryset的选择字段。我的网址和视图包含此ID,但我不知道如何将此表单传递给我的查询集。

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)

1 个答案:

答案 0 :(得分:0)

是和否。

你这样做的方法是不可能的,但你可以在表单的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)