我正在尝试熟悉如何使用 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/