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