Django test fixtures and content types
Asked Answered
T

1

13

I'm using django's ContentType foreign key in my model, and I'm using it in the fixtures for unit tests.

Therefore, I have to hard-code content_type_id in my fixture, but django sometimes initializes it to a different value and thus my tests fail.

So is there a way to safely predict the content_type_id of the model or any other proper way to handle such situations?

Thirteenth answered 8/11, 2011 at 15:5 Comment(0)
D
20

Use natural keys: https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys

Most of the documentation refers to how to add the capability to your own models, but ContentType already supports them so just add --natural-foreign to your dumpdata management command:

$ python manage.py dumpdata myapp --indent=4 --natural-foreign
Decoration answered 8/11, 2011 at 15:8 Comment(2)
Thanks, a note that ContentType already have get_by_natural_key(app_label, model) is very useful.Thirteenth
Thanks, was stumped on this for a while. Also needed "--natural-primary" to get testing working.Kimmie

© 2022 - 2024 — McMap. All rights reserved.