首页 > 解决方案 > 如何在 Django 中加载带有多对多关系的 fixtures.json

问题描述

假设您必须创建一个数据库,在其中存储图书馆中的所有书籍以及来自世界各地的所有作者。您在名为 books.json 的文件中拥有每本书,在名为 authors.json 的文件中拥有所有作者。然后,您希望在这些表之间创建一个链接,其中一本书可以有一个或多个作者。我所做的是创建了所需的模型,然后我加载了 authors.json,然后当我尝试加载 books.json 时出现错误:django.core.serializers.base.DeserializationError: Problem installed fixture '/workspace/libray/books /fixtures/books.json':

class book(models.Model):
     name =models.CharField(max_length=254, blank=True, null=True, on_delete=SET_NULL)
     authors = models.ManyToManyField(author)



class authors(models.Model):
        name = models.Charfield(max_length=100, blank=True, null=True, on_delete=SET_NULL)


   books.json
[ 
   {
    "pk":1,
    "model":books.book,
    "fields":{
              "name":"Book1",
              "authors":[1,2,3]
              }
    },
    ...
 ]

authors.json
[ 
   {
    "pk":1,
    "model":books.author,
    "fields":{
              "name":"Author1",
            }
    },
    ...
 ]

当模型之间存在 M2M 关系时,如何正确加载一些夹具。

标签: jsondjango

解决方案


首先在模型中添加一些测试数据,然后运行python manage.py dumpdata myapp > somefile.json

然后瞧你有你的夹具模板。


推荐阅读