将 kwargs 传递给 Django 中的自定义字段

约翰

我使用这个问题作为创建自定义字段的基础:

Django文件上传大小限制

当我尝试 makemigrations 时,我收到一条错误消息,指出“content_types”不在 kwargs 中。我已经调试了代码,看起来我的自定义字段init几乎被调用了两次。一次来自我拥有此字段的模型(带有 kwargs),一次不包含 kwargs。

我参考了这篇文章:How to pass additional keyword arguments in a custom Field in Django Rest Framework?

但是,我已经在做解决方案所说的任何事情。

class MediaField(FileField):
    def __init__(self, *args, **kwargs):
        self.content_types = kwargs.pop('content_types')
        self.max_upload_size = kwargs.pop('max_upload_size')

        super(MediaField, self).__init__(*args, **kwargs)

模型中的作用域:

media = MediaField(upload_to='media',  # this will create a folder in MEDIA_ROOT
                   content_types=['jpeg', 'jpg', 'png'],
                   max_upload_size=5242880)

错误: KeyError: 'content_types'

堆栈跟踪:

    (efs-cP0vQdei) user@right:~/Documents/websites/efs$ ./manage.py makemigrations
Traceback (most recent call last):
  File "./manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/core/management/__init__.py", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/core/management/base.py", line 335, in execute
    output = self.handle(*args, **options)
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/core/management/commands/makemigrations.py", line 133, in handle
    ProjectState.from_apps(apps),
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/db/migrations/state.py", line 222, in from_apps
    model_state = ModelState.from_model(model)
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/db/migrations/state.py", line 411, in from_model
    fields.append((name, field.clone()))
  File "/home/user/.local/share/virtualenvs/efs-cP0vQdei/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 470, in clone
    return self.__class__(*args, **kwargs)
  File "/home/user/Documents/websites/efs/ssadventures/customfields.py", line 23, in __init__
    self.content_types = kwargs.pop('content_types')
KeyError: 'content_types'
约翰

我想出了解决方案:

向自定义字段类添加解构:

def deconstruct(self):
    name, path, args, kwargs = super(MediaField, self).deconstruct()

    kwargs['content_types'] = self.content_types
    kwargs['max_upload_size'] = self.max_upload_size

    return name, path, args, kwargs

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将kwargs传递到Django过滤器中

来自分类Dev

将字段值传递给自定义布局

来自分类Dev

如何将kwargs传递给argparse

来自分类Dev

将值传递给天蓝色板任务,用户案例等中的自定义字段

来自分类Dev

尝试将 django-oscar 产品传递给自定义模板

来自分类Dev

Celery apply_async将kwargs传递给链中的所有任务

来自分类Dev

Django 1.11 将 kwarg 传递给 modelform 字段

来自分类Dev

** kwargs没有将变量传递给函数,怎么了?

来自分类Dev

修改后将* args,** kwargs传递给父类

来自分类Dev

Seaborn将kwargs传递给plt.boxplot()

来自分类Dev

Python Multiprocessing-如何将kwargs传递给函数?

来自分类Dev

将kwargs传递给线程运行器方法的最佳方法

来自分类Dev

Ruby将数字作为密钥传递给** kwargs

来自分类Dev

将元组传递给采用 *args 和 **kwargs 的函数

来自分类Dev

SYMFONY自定义CONSTRAINT->将变量传递给自定义CONSTRAINT /绑定到表单字段的CONSTRAINT如何在注释中覆盖CONSTRAINT

来自分类Dev

将formset作为参数传递给Django中的函数

来自分类Dev

将参数传递给Django / Allauth中的覆盖视图

来自分类Dev

将当前用户传递给Django中的CreateView的初始用户

来自分类Dev

将formset作为参数传递给Django中的函数

来自分类Dev

如何将 JSON 传递给 Django 中的 Ajax 请求?

来自分类Dev

将电子邮件传递给 Django 中的路径

来自分类Dev

如何将参数传递给 Django 中的表单类?

来自分类Dev

将 id 参数传递给 Django 中的导入类

来自分类Dev

是否可以将HTML输入字段变量传递给自定义Angularjs过滤器?

来自分类Dev

交响乐。如何将参数传递给自定义表单字段类型?

来自分类Dev

将模型字段值分配给Django中的自定义字段?

来自分类Dev

将参数传递给自定义异常

来自分类Dev

将参数传递给自定义中间件

来自分类Dev

如何将参数传递给自定义操作?

Related 相关文章

  1. 1

    将kwargs传递到Django过滤器中

  2. 2

    将字段值传递给自定义布局

  3. 3

    如何将kwargs传递给argparse

  4. 4

    将值传递给天蓝色板任务,用户案例等中的自定义字段

  5. 5

    尝试将 django-oscar 产品传递给自定义模板

  6. 6

    Celery apply_async将kwargs传递给链中的所有任务

  7. 7

    Django 1.11 将 kwarg 传递给 modelform 字段

  8. 8

    ** kwargs没有将变量传递给函数,怎么了?

  9. 9

    修改后将* args,** kwargs传递给父类

  10. 10

    Seaborn将kwargs传递给plt.boxplot()

  11. 11

    Python Multiprocessing-如何将kwargs传递给函数?

  12. 12

    将kwargs传递给线程运行器方法的最佳方法

  13. 13

    Ruby将数字作为密钥传递给** kwargs

  14. 14

    将元组传递给采用 *args 和 **kwargs 的函数

  15. 15

    SYMFONY自定义CONSTRAINT->将变量传递给自定义CONSTRAINT /绑定到表单字段的CONSTRAINT如何在注释中覆盖CONSTRAINT

  16. 16

    将formset作为参数传递给Django中的函数

  17. 17

    将参数传递给Django / Allauth中的覆盖视图

  18. 18

    将当前用户传递给Django中的CreateView的初始用户

  19. 19

    将formset作为参数传递给Django中的函数

  20. 20

    如何将 JSON 传递给 Django 中的 Ajax 请求?

  21. 21

    将电子邮件传递给 Django 中的路径

  22. 22

    如何将参数传递给 Django 中的表单类?

  23. 23

    将 id 参数传递给 Django 中的导入类

  24. 24

    是否可以将HTML输入字段变量传递给自定义Angularjs过滤器?

  25. 25

    交响乐。如何将参数传递给自定义表单字段类型?

  26. 26

    将模型字段值分配给Django中的自定义字段?

  27. 27

    将参数传递给自定义异常

  28. 28

    将参数传递给自定义中间件

  29. 29

    如何将参数传递给自定义操作?

热门标签

归档