python-Django 1.7 makemigrations-ValueError:无法序列化类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Django 1.7 makemigrations-ValueError:无法序列化类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3308字,纯文字阅读大概需要5分钟。
内容图文
![python-Django 1.7 makemigrations-ValueError:无法序列化类](/upload/InfoBanner/zyjiaocheng/681/5795e31b3a7a41419d500992edfef926.jpg)
从Django 1.6.11升级到1.7时,我遇到了一个有趣的问题.这似乎是基于我目前如何分割文件.当前,由于大量的方法,模型方法存储在与模型分开的文件中.
例如,将其拆分如下:
help
|_ modelmethods
| |_ __init__.py
| |_ thread_methods.py
|_ __init__.py
|_ models.py
帮助应用程序文件夹中的__init__.py如下所示:
""" __init__.py for help app."""
from help.modelmethods.thread_methods import *
而且thread_methods.py看起来像这样:
"""Methods for the Thread model."""
from help.models import Thread
class ThreadMethods:
"""Adds methods on to the Thread model."""
def do_the_thing(self):
pass
Thread.__bases__ += (ThreadMethods,)
我从中看到的错误如下:
Migrations for 'help':
0001_initial.py:
- Create model Thread
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 124, in handle
self.write_migration_files(changes)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 152, in write_migration_files
migration_string = writer.as_string()
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/db/migrations/writer.py", line 129, in as_string
operation_string, operation_imports = OperationWriter(operation).serialize()
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/db/migrations/writer.py", line 86, in serialize
arg_string, arg_imports = MigrationWriter.serialize(arg_value)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/db/migrations/writer.py", line 245, in serialize
item_string, item_imports = cls.serialize(item)
File "/Users/user/.virtualenvs/stuff/lib/python2.7/site-packages/django/db/migrations/writer.py", line 380, in serialize
raise ValueError("Cannot serialize: %r\nThere are some values Django cannot serialize into migration files.\nFor more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing" % value)
ValueError: Cannot serialize: <class help.modelmethods.thread_methods.ThreadMethods at 0x1105c3870>
There are some values Django cannot serialize into migration files.
For more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing
我意识到它正在尝试对该类进行序列化并使其窒息.是否有解决此问题并保持分离的好方法?或者,唯一可比较的方法是使用正确的__init__.py设置将models.py文件分解为一个models文件夹,并将每个文件专用于一个模型,该模型还包含所有相关方法(以及确保没有循环导入)被介绍).
解决方法:
您需要从对象类派生您的方法模型,还尝试从ThreadMethods派生Thread,而不是将其添加到__bases__.
class ThreadMethods(object):
# ....
内容总结
以上是互联网集市为您收集整理的python-Django 1.7 makemigrations-ValueError:无法序列化类全部内容,希望文章能够帮你解决python-Django 1.7 makemigrations-ValueError:无法序列化类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。