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)