Django ModelForms __init__ kwargs创建和更新

权贵

我正在尝试将request.user放入ModelForm。我觉得我已经尝试过通过重载来进行所有排列

__init__ 

参数(按Django形式,request.post和initial)尝试将其作为kwargs传递(按Django形式__init __()获得关键字arguments的多个值)。一世

看来,kwargs是最好的方法,但是我完全受制于它。

这是ModelForm:

class DistListForm(ModelForm):
    members = ModelMultipleChoiceField(queryset=Company.objects.none())
    class Meta:
        model = DistList
        fields = ['name', 'description', 'members', 'is_private']

    def __init__(self, *args, **kwargs):
        super(DistListForm, self).__init__(*args, **kwargs)
        user = kwargs.pop('user', None)
        up = UserProfile.objects.get(user=user)
        /.. etc  ../

以下是create函数当前的工作方式:

def distlistcreate(request):
    user = {'user': request.user}
    form = DistListForm(**user)
    if request.method ==  'POST':
        form = DistListForm(request.POST)
        if form.is_valid():
            distlist = form.save(commit=False)
            distlist.creator = request.user
            distlist.save()
            form.save_m2m()

            return HttpResponseRedirect(reverse('distlistsmy'))
    return render(request, 'distlistcreate.html',{'form':form})

抛出TypeError的错误:init()获得了意外的关键字参数'user'。更新方法同样无济于事:

def distlistupdate(request, object_id):
    distlist = get_object_or_404(DistList, id=object_id)
    form = DistListForm(user=request.user, instance=distlist)
    if request.method ==  'POST':
        form = DistListForm(request.POST, user=request.user)

它还会引发相同的错误。

我已经把头撞在这堵墙上两个小时了。将关键字参数传递到ModelForm的正确方法是什么?

如果这有所不同,则为Django 1.6.1。

马里奥·凯撒(Mario Caesar)

您必须在调用super()之前弹出用户参数,这样就不会与ModelForm的默认参数冲突。

class DistListForm(ModelForm):
    members = ModelMultipleChoiceField(queryset=Company.objects.none())
    class Meta:
        model = DistList
        fields = ['name', 'description', 'members', 'is_private']

    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super(DistListForm, self).__init__(*args, **kwargs)
        user_profile = UserProfile.objects.get(user=user)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:在Modelforms中使用ImageField

来自分类Dev

Django ModelForm覆盖__init__

来自分类Dev

具有在__init__中具有参数的ModelForms的表单向导

来自分类Dev

将 kwargs 读入 __init__

来自分类Dev

无法弄清楚如何使用不同的前缀 django 创建多个 Modelforms

来自分类Dev

Django使用表中的'__init__'函数创建模型的新实例,实例数据是错误的?

来自分类Dev

Django Modelforms:如何显示CharField的选择?

来自分类Dev

Django:向 ModelForms 添加默认值

来自分类Dev

如何创建__init__函数?

来自分类Dev

django形式__init__不包括字段

来自分类Dev

django形式__init__不包括字段

来自分类Dev

django - 类型错误 __init__ 位置参数

来自分类Dev

Django FormView:区分创建和更新

来自分类Dev

创建实例时默认调用__init__

来自分类Dev

Django ModelForms:在表单中植入FK相关字段

来自分类Dev

如何在Django ModelForms中编写占位符?

来自分类Dev

如何将活动用户传递给Django ModelForms

来自分类Dev

Django:ModelForms:ImageField始终为空,并被ModelForm拒绝

来自分类Dev

POST 请求中的 Django ModelForms 和普通表单

来自分类Dev

Django ModelForms 忽略了一个干净的字段方法

来自分类Dev

Django表单继承不起作用__init__

来自分类Dev

Django-在__init__中添加模型字段验证器

来自分类Dev

我可以安全删除Django的空__init__文件吗?

来自分类Dev

Django-在__init__中添加模型字段验证器

来自分类Dev

Django Mixin的参数表示__init__的值过多

来自分类Dev

在 Django 中使用不带“def __init__”的“self”实例

来自分类Dev

django-rest-framework ManyToManyField创建和更新

来自分类Dev

如何自动处理 Django 模型的创建和更新日期?

来自分类Dev

PYTHON:__init__方法不会创建属性吗?

Related 相关文章

  1. 1

    Django:在Modelforms中使用ImageField

  2. 2

    Django ModelForm覆盖__init__

  3. 3

    具有在__init__中具有参数的ModelForms的表单向导

  4. 4

    将 kwargs 读入 __init__

  5. 5

    无法弄清楚如何使用不同的前缀 django 创建多个 Modelforms

  6. 6

    Django使用表中的'__init__'函数创建模型的新实例,实例数据是错误的?

  7. 7

    Django Modelforms:如何显示CharField的选择?

  8. 8

    Django:向 ModelForms 添加默认值

  9. 9

    如何创建__init__函数?

  10. 10

    django形式__init__不包括字段

  11. 11

    django形式__init__不包括字段

  12. 12

    django - 类型错误 __init__ 位置参数

  13. 13

    Django FormView:区分创建和更新

  14. 14

    创建实例时默认调用__init__

  15. 15

    Django ModelForms:在表单中植入FK相关字段

  16. 16

    如何在Django ModelForms中编写占位符?

  17. 17

    如何将活动用户传递给Django ModelForms

  18. 18

    Django:ModelForms:ImageField始终为空,并被ModelForm拒绝

  19. 19

    POST 请求中的 Django ModelForms 和普通表单

  20. 20

    Django ModelForms 忽略了一个干净的字段方法

  21. 21

    Django表单继承不起作用__init__

  22. 22

    Django-在__init__中添加模型字段验证器

  23. 23

    我可以安全删除Django的空__init__文件吗?

  24. 24

    Django-在__init__中添加模型字段验证器

  25. 25

    Django Mixin的参数表示__init__的值过多

  26. 26

    在 Django 中使用不带“def __init__”的“self”实例

  27. 27

    django-rest-framework ManyToManyField创建和更新

  28. 28

    如何自动处理 Django 模型的创建和更新日期?

  29. 29

    PYTHON:__init__方法不会创建属性吗?

热门标签

归档