如果使用Django的loaddata功能在数据库表中添加数据?
本文介绍了如果使用Django的loaddata功能在数据库表中添加数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
当我使用loaddata
在默认的Account
中添加数据的时候:
$ python manage.py loaddata account.yaml
Installed 8 object(s) from 1 fixture(s)
$ cat account.yaml
- model: users.account
pk: 1
fields:
name: 超级管理员
username: admin
password: pbkdf2_sha256$36000$g1pikLFCBqKU$3nniFa7Tctd9bVQ1E8d8uGxRZGXhzExLHMF0ecCPjXU=
is_superuser: True
is_staff: True
date_joined: 2017-08-09 17:16:14
update: 2017-08-09 17:19:17
然而,在默认的Group
中添加数据是:
$ cat group.yaml
- model: django.contrib.auth.group
pk: 1
fields:
name: operation
$ python manage.py loaddata group.yaml
Traceback (most recent call last):
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/pyyaml.py", line 79, in Deserializer
for obj in PythonDeserializer(yaml.load(stream, Loader=SafeLoader), **options):
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/python.py", line 99, in Deserializer
Model = _get_model(d["model"])
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/python.py", line 192, in _get_model
return apps.get_model(model_identifier)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/apps/registry.py", line 198, in get_model
app_label, model_name = app_label.split('.')
ValueError: too many values to unpack (expected 2)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
execute_from_command_line(sys.argv)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
utility.execute()
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/__init__.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 69, in handle
self.loaddata(fixture_labels)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 109, in loaddata
self.load_label(fixture_label)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 166, in load_label
for obj in objects:
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/pyyaml.py", line 85, in Deserializer
six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/pyyaml.py", line 79, in Deserializer
for obj in PythonDeserializer(yaml.load(stream, Loader=SafeLoader), **options):
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/python.py", line 99, in Deserializer
Model = _get_model(d["model"])
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/core/serializers/python.py", line 192, in _get_model
return apps.get_model(model_identifier)
File "/home/ansheng/.pyenv/versions/slock/lib/python3.6/site-packages/django/apps/registry.py", line 198, in get_model
app_label, model_name = app_label.split('.')
django.core.serializers.base.DeserializationError: Problem installing fixture '/home/ansheng/work/slock/slock-platform/group.yaml': too many values to unpack (expected 2)
- Group Model
这是默认的
@python_2_unicode_compatible
class Group(models.Model):
"""
Groups are a generic way of categorizing users to apply permissions, or
some other label, to those users. A user can belong to any number of
groups.
A user in a group automatically has all the permissions granted to that
group. For example, if the group 'Site editors' has the permission
can_edit_home_page, any user in that group will have that permission.
Beyond permissions, groups are a convenient way to categorize users to
apply some label, or extended functionality, to them. For example, you
could create a group 'Special users', and you could write code that would
do special things to those users -- such as giving them access to a
members-only portion of your site, or sending them members-only email
messages.
"""
name = models.CharField(_('name'), max_length=80, unique=True)
permissions = models.ManyToManyField(
Permission,
verbose_name=_('permissions'),
blank=True,
)
objects = GroupManager()
class Meta:
verbose_name = _('group')
verbose_name_plural = _('groups')
def __str__(self):
return self.name
def natural_key(self):
return (self.name,)
我该如何使用fixtures
的功能往Django提供的模型中导入数据?
解决方案
缺少permission_id字段,取值范围1-84
这篇关于如果使用Django的loaddata功能在数据库表中添加数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文