【问题标题】:'int' object has no attribute 'replace' loading initial data in django'int' 对象没有属性 'replace' 在 django 中加载初始数据
【发布时间】:2015-09-25 21:51:01
【问题描述】:

我正在尝试熟悉如何使用 loaddata 将初始数据加载到模型中。所以我的 json 看起来像这样:

[
  {
    "model": "locations.location",
    "pk": 1,
    "fields": {
      "name": "Cafe"
    }
  }
]

我的model.py:

class Location(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    create_date = models.DateTimeField('date added', auto_now_add=True)
    modify_date = models.DateTimeField('date modified', default=timezone.now)
    name = models.CharField(max_length=200)

然后当我做python manage.py loaddata mydata 时,我得到了

django.core.serializers.base.DeserializationError: 安装问题 夹具 '/path/to/locations/fixtures/mydata.json': 'int' 对象没有 属性“替换”

这是什么意思?我也尝试在models.py

def __unicode__(self):
    return self.name

def __unicode__(self):
    return self.name.get_full_name() 

但是没有用。这个 int 对象是什么?

更多追溯:

 File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/loaddata.py", line 60, in handle
    self.loaddata(fixture_labels)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/loaddata.py", line 90, in loaddata
    self.load_label(fixture_label)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/loaddata.py", line 141, in load_label
    for obj in objects:
  File "/usr/local/lib/python2.7/dist-packages/django/core/serializers/json.py", line 84, in Deserializer
    six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
  File "/usr/local/lib/python2.7/dist-packages/django/core/serializers/json.py", line 78, in Deserializer
    for obj in PythonDeserializer(objects, **options):
  File "/usr/local/lib/python2.7/dist-packages/django/core/serializers/python.py", line 104, in Deserializer
    data[Model._meta.pk.attname] = Model._meta.pk.to_python(d.get("pk", None))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 2404, in to_python
    return uuid.UUID(value)
  File "/usr/lib/python2.7/uuid.py", line 131, in __init__
    hex = hex.replace('urn:', '').replace('uuid:', '')

【问题讨论】:

  • 这就是你所有的 mydata.json 文件吗?
  • 是的,我想试试它是否有效,所以我想在我的模型中添加一个字段
  • 请展示你的模型。
  • 你有更多的追溯信息吗?有些东西显然在期待一个字符串但得到一个 int。
  • 你有"pk": 1id = models.UUIDField

标签: python json django


【解决方案1】:

这要感谢所有的 cmets:

[
  {
    "model": "locations.location",
    "fields": {
        "id":"a3184190-0b97-4c56-8aac-eeee8875aaa2",
        "name": "Cafe"
    }
  }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    相关资源
    最近更新 更多