Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将模型从视图传递到窗体';s的内部元类_Python_Django - Fatal编程技术网

Python 将模型从视图传递到窗体';s的内部元类

Python 将模型从视图传递到窗体';s的内部元类,python,django,Python,Django,我想将一个特定模型从我的视图传递到表单的内部元类: 视图: 表格: 这可能吗?这不起作用,因为加载文件时会创建表单及其字段。您可能可以将类定义移动到函数中并动态定义它 @login_required def product_create_view(request): class CreateProductForm(ModelForm): class Meta: model = model fields = (

我想将一个特定模型从我的视图传递到表单的内部元类:

视图:

表格:


这可能吗?

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

@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})

不过我还没试过

这没有道理。你为什么要这样做?@DanielRoseman看到我的另一个问题了:你为什么不使用一个
modelform\u工厂(model,exclude=('id',)
将为模型类
model
创建一个模型表单类,仅排除id字段。@dirkgroten如何通过modelform\u工厂验证字段?像
def clean_category(…)
?您没有说您有任何自定义验证。。。
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)
@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})