По моему опыту, жестко запрограммированные приборы - это боль, которую нужно писать, и боль, которую нужно поддерживать. Везде, где изменение модели нарушает фикстуру, начальная загрузка Django будет возвращать очень недружелюбное сообщение об ошибке, и вы в конечном итоге добавите кучу отпечатков в ядре Django, чтобы найти источник проблемы.
Один из разработчиков, с которым я работаю, разработал очень хорошую библиотеку для решения этой проблемы, она называется django-dynamic-fixture , и нам действительно это нравится. Вот как это работает:
Предположим, у вас есть эти модели:
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
author = models.ForeingKey(Author, required=True)
title = models.CharField()
Чтобы создать экземпляр книги в своем тесте, все что вам нужно сделать, это
from django_dynamic_fixture import get
from app import Book
class MyTest(TestCase):
def setUp(self):
self.book = get(Book)
django-dynamic-fixture автоматически создает для вас любые зависимости, необходимые для существования модели Book. Это простой пример, но библиотека может работать с очень сложными модельными структурами.