Przepuściłem migrację ForeignKey
do GenericForeignKey
przy użyciu szkieletu contrib.contenttypes
. Aby uzyskać dostęp do obiektu ContentType
muszę migrować dane, użyłem tego kodu:Django: Typy ContentTypes podczas migracji podczas wykonywania testów
ContentType = apps.get_model('contenttypes', 'ContentType')
my_model_content_type = ContentType.objects.get(
app_label='my_app',
model='my_model'
)
Migracja działa gdy uruchamiam manage.py migrate
i mogę wtedy grać z zaktualizowanego modelu w powłoce bez problemów.
Jednak gdy próbuję uruchomić manage.py test
, pojawia się następujący błąd w linii ContentTypes.object.get()
:
__fake__.DoesNotExist: ContentType matching query does not exist.
Zapytania na ContentType.objects.all()
w tym czasie zwraca pusty queryset.
próbowałem (jak kierowany przez inną odpowiedź tutaj w SO), aby uruchomić ten przed moim zapytaniu, ale bezskutecznie:
update_contenttypes(apps.app_configs['contenttypes'])
update_contenttypes(apps.app_configs['my_app'])
Skąd mogę mieć pewność, że ContentType
wiersze istnieć w tym momencie w przetestować migrację bazy danych?
To nie działa w wersji 1.11: 'od django.contrib.contenttypes.management import update_contenttypes' –
https://code.djangoproject.com/ticket/28092 Zmieniono nazwę na create_contenttypes –
To działało dla mnie w Django 1.11 przy użyciu zmieniono nazwę na "update_contenttypes". – Franey