如何在 django taggit 标签模型中设置初始标签数据



是否可以按如下方式通过夹具初始化标签数据;

[{
    "fields": {
        "name": "tag1"
    },
    "model": "taggit.Tag",
    "pk": 1
},
{
    "fields": {
        "name": "tag2"
    },
    "model": "taggit.Tag",
    "pk": 2
},
{
    "fields": {
        "name": "tag3"
    },
    "model": "taggit.Tag",
    "pk": 3
},]

当我尝试使用上面的文件时,我得到以下错误。我猜它试图插入与第一个相同的第二个蛞蝓,所以它不是唯一的。是否可以在灯具文件中也设置 slug,或者我应该尝试另一种方法来初始化我的标签数据。

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:Python27libsite-packagesdjangocoremanagement__init__.py", line
338, in execute_from_command_line
    utility.execute()
  File "C:Python27libsite-packagesdjangocoremanagement__init__.py", line
330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:Python27libsite-packagesdjangocoremanagementbase.py", line 390,
 in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:Python27libsite-packagesdjangocoremanagementbase.py", line 441,
 in execute
    output = self.handle(*args, **options)
  File "C:Python27libsite-packagesdjangocoremanagementcommandsloaddata.p
y", line 60, in handle
    self.loaddata(fixture_labels)
  File "C:Python27libsite-packagesdjangocoremanagementcommandsloaddata.p
y", line 90, in loaddata
    self.load_label(fixture_label)
  File "C:Python27libsite-packagesdjangocoremanagementcommandsloaddata.p
y", line 147, in load_label
    obj.save(using=self.using)
  File "C:Python27libsite-packagesdjangocoreserializersbase.py", line 173
, in save
    models.Model.save_base(self.object, using=using, raw=True)
  File "C:Python27libsite-packagesdjangodbmodelsbase.py", line 738, in sa
ve_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, upda
te_fields)
  File "C:Python27libsite-packagesdjangodbmodelsbase.py", line 822, in _s
ave_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "C:Python27libsite-packagesdjangodbmodelsbase.py", line 861, in _d
o_insert
    using=using, raw=raw)
  File "C:Python27libsite-packagesdjangodbmodelsmanager.py", line 127, in
 manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:Python27libsite-packagesdjangodbmodelsquery.py", line 920, in _
insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:Python27libsite-packagesdjangodbmodelssqlcompiler.py", line 96
3, in execute_sql
    cursor.execute(sql, params)
  File "C:Python27libsite-packagesdjangodbbackendsutils.py", line 79, in
execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "C:Python27libsite-packagesdjangodbbackendsutils.py", line 64, in
execute
    return self.cursor.execute(sql, params)
  File "C:Python27libsite-packagesdjangodbutils.py", line 97, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:Python27libsite-packagesdjangodbbackendsutils.py", line 64, in
execute
    return self.cursor.execute(sql, params)
  File "C:Python27libsite-packagesdjangodbbackendssqlite3base.py", line
318, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: Problem installing fixture 'D:djangodemo3myappmyapp/fixturestags.json': Could not load taggit.Tag(pk=2): colu
mn slug is not unique

taggit 中的 slug 字段。标签模型也应该是唯一的,做类似的事情

{
"model": "taggit.Tag",
"pk": 1,
"fields": {
    "name": "first",
    "slug":"first"
    }
},
{
"model": "taggit.Tag",
"pk": 2,
"fields": {
    "name": "second",
    "slug":"second"
    }
},
{
"model": "taggit.Tag",
"pk": 3,
"fields": {
    "name": "third",
    "slug":"third"
    }
}

它会工作

最新更新