python - 'int' 对象没有属性 'replace' 在 Django 中加载初始数据

标签 python json django

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

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

我的模型.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: Problem installing fixture '/path/to/locations/fixtures/mydata.json': 'int' object has no attribute 'replace'

这是什么意思?我还尝试在 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:', '')

最佳答案

由于所有的评论,这才有效:

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

关于python - 'int' 对象没有属性 'replace' 在 Django 中加载初始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791147/

相关文章:

python - 在python中每隔n个项目拆分一个生成器/可迭代(splitEvery)

python - 为什么执行委托(delegate)函数时 Python 回溯很糟糕

json - 使用 jq 将某些字段格式化为紧凑格式?

java - 无法从更新的 org.json 包中导入类

python - 在数据在其他地方发生变化时迭代大型 Django 查询集

python - 如何在 Pandas 中填充行不为 NULL 的列名?

python - (?ui) 在 Python 正则表达式中意味着什么?

MySQL 更新数组中的特定 JSON 对象

python - Django-无法导入文件

django - 通过 Django 发送电子邮件时出现 SSL 错误