django-import-export - импорт ManyToMany из файла JSON - PullRequest
0 голосов
/ 21 ноября 2019

Я пытаюсь импортировать файл JSON, который содержит отношение «многие ко многим», но у меня возникают некоторые проблемы. Это мой код:

book.json

{
  "title": "The Lord of the Rings",
  "categories": [
      "Fantasy",
      "Action",
      "Adventure"
  ]
}

models.py

from django.db import models

class Category(models.Model):
    guid = models.CharField(max_length=36)
    display_name = models.CharField(max_length=50)
    description = models.TextField()

    def __str__(self):
        return self.display_name

class Book(models.Model):
    title = models.CharField(max_length=200)
    categories = models.ManyToManyField(Category)

    def __str__(self):
        return self.title

resources.py

from import_export import resources
from import_export.fields import Field
from import_export.widgets import ManyToManyWidget
from .models import Book, Category

class BookResource(resources.ModelResource):
    categories = Field(widget=ManyToManyWidget(Category))

    class Meta:
        model = Book
        import_id_fields = ('title',)

importer.py

from resources import BookResource
from models import Book

with open("book.json", 'r') as f:
        book = '[' + f.read() + ']'
        result = BookResource().import_data(tablib.Dataset().load(book), raise_errors=True, dry_run=True)

Это, кажется, проходит без ошибок и добавляет новый book кбаза данных. Проблема в том, что он не создает новую запись в таблице book_categories (PostgreSQL). Я думаю, что я определенно пропускаю шаг где-то, потому что я не определил, как найти правильные записи в базе данных category, учитывая список строк display_name. Я на правильном пути здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...