【发布时间】:2019-12-30 23:08:45
【问题描述】:
我正在开发一个代码库,其中原始开发人员创建了一个ProductType model,数据库中有几行代表几种产品类型。在整个代码中,有类似ProductType.objects.get(slug='foo_product_type') 的语句。如果夹具没有用slug = 'foo_product_type' 加载ProductType 记录,这些语句将导致严重崩溃。用 slug 'foo_product_type' 定义 ProductType 的最佳实践是什么?似乎python代码不应该依赖于加载的固定装置,但我真的想不出另一种解决方案。感觉服务器逻辑依赖于某些数据库字段是一种不好的做法,但我不确定我是否能想到另一种方法。
我曾在模型定义上使用choices=,但这似乎更有助于数据完整性,而不是加载带有price 之类的详细信息的记录,所以这对我没有帮助。我目前在迁移新数据库后加载固定装置,这很有效,但我很好奇是否有人有更好的解决方案。
if ProductType.objects.get(slug='foo_product_type'):
当 ProductType 与 slug 'foo_product_type' 不存在时。
当夹具被加载时,对象被抓取以在代码中使用。当记录丢失时,应用程序崩溃。
【问题讨论】:
-
上述方法不起作用,因为
.get(..)会在记录不存在的情况下引发错误。 -
@WillemVanOnsem 是的,这是正确的。我正在寻找另一种方法。 django-enum 合适吗?
标签: django enums slug django-fixtures