Django JSON файл - На какой файл должна ссылаться "model":?

Я пытаюсь заполнить свою модель полями, которые я ввел в json, но я не уверен, к какому файлу должна относиться "модель":?

Я предполагаю, что это должно быть место, где находится модель, но я всегда получаю ошибку, когда пытаюсь загрузить файл - Problem installing fixture '/workspace/django-film-club/film/fixtures/films.json':

film/fixtures/films.json;

[
    {
        "model": "film.movie",
        "pk": null,
        "fields": {
            "title": "Django Unchained",
            "slug": "django-unchained",
            "year": 2012,
            "genre": "WESTERN",
            "synopsis": "<p>With the help of a German bounty-hunter, a freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.<p>",
            "director": "Quentin Tarantino",
            "excerpt": "A freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.",
            "added_on": "2024-06-01T09:43:19.754Z"
        }
    },
]

film/models.py;

class Movie(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    year = models.IntegerField(('year'), default=datetime.datetime.now().year)
    genre = models.CharField(max_length=15, choices=GENRE_CHOICES, default='horror')
    synopsis = models.TextField()
    director = models.CharField(max_length=200, unique=True)
    excerpt = models.TextField(blank=True)
    added_on = models.DateTimeField(auto_now_add=True)

Единственное, что я могу сказать, это то, что модель в json-файле неправильная, я пробовал разные имена для модели: input, но все равно, кажется, не работает.

Я ожидал, что если удастся загрузить данные на сайт, но все равно получаю ошибку.

Я воссоздал ваше приложение на основе предоставленной вами информации. Есть несколько вещей, с которыми я столкнулся, и которые вы могли бы проверить.

1. Недопустимый JSON

В предоставленном вами JSON film/fixtures/films.json есть лишняя недопустимая запятая в конце.

[
    {
        "model": "film.movie",
        "pk": null,
        "fields": {
            "title": "Django Unchained",
            "slug": "django-unchained",
            "year": 2012,
            "genre": "WESTERN",
            "synopsis": "<p>With the help of a German bounty-hunter, a freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.<p>",
            "director": "Quentin Tarantino",
            "excerpt": "A freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.",
            "added_on": "2024-06-01T09:43:19.754Z"
        }
    }, // This one right here
]

В JSON не может быть запятой в конце, как в dict в Python

2. Убедитесь, что вы создали и применили миграции.

Если вы получаете ошибку, похожую на следующую, возможно, вы забыли эти шаги.

django.db.utils.OperationalError: Problem installing fixture '~/Desktop/django/testproject/film/fixtures/films.json': Could not load film.Movie(pk=None): no such table: film_movie

Чтобы решить эту проблему, выполните следующие команды:

ПЕРВЫЙ:

python3 manage.py makemigrations

СЕКУНДА:

python3 manage.py migrate

MISC

  • Убедитесь, что фильм находится в settings.py
  • Убедитесь, что вы правильно выполняете команду loaddata:
python3 manage.py loaddata films.json
  • Убедитесь, что в вашей базе данных нет конфликтов
  • .

Вы можете получить ошибку, подобную этой:

django.db.utils.IntegrityError: Problem installing fixture '~/Desktop/django/testproject/film/fixtures/films.json': Could not load film.Movie(pk=None): UNIQUE constraint failed: film_movie.director

Мой код

Если ничего из перечисленного не помогло, вот файлы, которые я создал:

testproject/film/models.py

from django.db import models
import datetime

GENRE_CHOICES = [("WESTERN", "WESTERN")]


# Create your models here.
class Movie(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    year = models.IntegerField(("year"), default=datetime.datetime.now().year)
    genre = models.CharField(max_length=15, choices=GENRE_CHOICES, default="horror")
    synopsis = models.TextField()
    director = models.CharField(max_length=200, unique=True)
    excerpt = models.TextField(blank=True)
    added_on = models.DateTimeField(auto_now_add=True)

testproject/film/fixtures/films.json

[
    {
        "model": "film.movie",
        "pk": null,
        "fields": {
            "title": "Django Unchained",
            "slug": "django-unchained",
            "year": 2012,
            "genre": "WESTERN",
            "synopsis": "<p>With the help of a German bounty-hunter, a freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.<p>",
            "director": "Quentin Tarantino",
            "excerpt": "A freed slave sets out to rescue his wife from a brutal plantation owner in Mississippi.",
            "added_on": "2024-06-01T09:43:19.754Z"
        }
    }
]

testproject/testproject/settings.py

Вернуться на верх