0

我想将视图中的特定模型传递给表单的内部 Meta 类:

看法:

@login_required
def product_create_view(request):
    if request.method == 'POST':
        create_product_form = CreateProductForm(request.POST, request=request, model=model)
        if create_product_form.is_valid():
            create_product_form.save()
    else:
        create_product_form = CreateProductForm(request=request, model=model)
    return render(request, 'products/product_create.html', {'form': create_product_form})

形式:

class CreateProductForm(ModelForm):

    class Meta:
        model = CreateProductForm.model
        fields = (
            'title',
            'description',
            'price',
            'stock',
            'category'
        )

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        self.model = kwargs.pop('model')
        super().__init__(*args, **kwargs)

那可能吗?

4

1 回答 1

0

这不起作用,因为在加载文件时会创建带有字段的表单。您可能可以将类定义移动到函数中并动态定义它。

@login_required
def product_create_view(request):

    class CreateProductForm(ModelForm):
        class Meta:
            model = model
            fields = (
                'title',
                'description',
                'price',
                'stock',
                'category'
            )

    if request.method == 'POST':
        create_product_form = CreateProductForm(request.POST, request=request)
        if create_product_form.is_valid():
            create_product_form.save()
    else:
        create_product_form = CreateProductForm(request=request)
    return render(request, 'products/product_create.html', {'form': create_product_form})

我还没有尝试过。

于 2019-10-01T13:58:33.483 回答