Django测试夹具和内容类型

dra*_*oon 13 django django-testing django-contenttypes

我在我的模型中使用了django的ContentType外键,我正在使用它来进行单元测试.

因此,我必须在我的fixture中硬编码content_type_id,但django有时会将其初始化为不同的值,因此我的测试失败了.

那么有没有办法安全地预测模型的content_type_id或任何其他适当的方式来处理这种情况?

Chr*_*att 19

使用自然键:https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys

大多数文档都涉及如何将功能添加到您自己的模型,但ContentType已经支持它们,所以只需添加--natural-foreign到您的dumpdata管理命令:

$ python manage.py dumpdata myapp --indent=4 --natural-foreign
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,"ContentType"已经有了``get_by_natural_key(app_label,model)``的说明非常有用. (2认同)