Я пытаюсь импортировать файл 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
. Я на правильном пути здесь?