2017-08-14 20 views
0

当我开始测试时突然遇到编码时,我找不到异常的解决方案。该网站仍然适用于runserver。这里是完整的回溯:Django-MarkItUp:开始测试时的异常(AttributeError:'str'对象没有'raw'属性)

Traceback (most recent call last): 
    File "manage.py", line 10, in <module  
    execute_from_command_line(sys.argv) 
    File "…/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "…/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "…/lib/python3.5/site-packages/django/core/management/commands/test.py", line 29, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "…/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "…/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute 
    output = self.handle(*args, **options) 
    File "…/lib/python3.5/site-packages/django/core/management/commands/test.py", line 72, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "…/lib/python3.5/site-packages/django/test/runner.py", line 549, in run_tests 
    old_config = self.setup_databases() 
    File "…/lib/python3.5/site-packages/django/test/runner.py", line 499, in setup_databases 
    self.parallel, **kwargs 
    File "…/lib/python3.5/site-packages/django/test/runner.py", line 743, in setup_databases 
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True), 
    File "…/lib/python3.5/site-packages/django/db/backends/base/creation.py", line 78, in create_test_db 
    self.connection._test_serialized_contents = self.serialize_db_to_string() 
    File "…/lib/python3.5/site-packages/django/db/backends/base/creation.py", line 122, in serialize_db_to_string 
    serializers.serialize("json", get_objects(), indent=None, stream=out) 
    File "…/lib/python3.5/site-packages/django/core/serializers/__init__.py", line 129, in serialize 
    s.serialize(queryset, **options) 
    File "…/lib/python3.5/site-packages/django/core/serializers/base.py", line 88, in serialize 
    self.handle_field(obj, field) 
    File "…/lib/python3.5/site-packages/django/core/serializers/python.py", line 55, in handle_field 
    self._current[field.name] = field.value_to_string(obj) 
    File "…/lib/python3.5/site-packages/markitup/fields.py", line 103, in value_to_string 
    return value.raw 
AttributeError: 'str' object has no attribute 'raw' 

通常我试图缩小自己的问题。但在这种情况下,我没有得到任何地方。

我没有更新任何软件包。这是有问题的包:

  • 的Django(1.10.7)
  • Django的markitup(3.0.0)

(当我在标准TextField取代我MarkupField异常消失models.py

更新:连续使用--keepdb时出现错误。

回答

0

似乎可以通过

class MyMarkupField(MarkupField): 
    def value_to_string(self, obj): 
     value = self._get_val_from_obj(obj) 
     if hasattr(value, "raw"): 
      return value.raw 
     return value 

然后

field = MyMarkupField() 

其实我不知道为什么这个错误就要修复它。

+0

该错误似乎与django-factory-boy(1.0.0)相关。 – yofee

+0

如果答案没有解决,请不要接受。 – itzMEonTV

+0

你的答案解决了这个问题,但它可能不是最好的解决方案(但现在对我来说足够好了)。因此,如果有人想知道为什么发生错误或想要修复错误,我只想提供更多信息。 – yofee

相关问题