Python 保持许多不同django模型类型选择干燥的最佳方法是什么?
我将我的系统解耦到许多应用程序中,每个应用程序都有许多模型,其中许多模型都有 这就是结构 根Python 保持许多不同django模型类型选择干燥的最佳方法是什么?,python,django,web-services,architecture,Python,Django,Web Services,Architecture,我将我的系统解耦到许多应用程序中,每个应用程序都有许多模型,其中许多模型都有 这就是结构 根 核心(用于保存通用材料) 解耦应用程序 解耦应用程序 解耦应用程序 解耦应用程序 在这些应用程序中,很多时候模型都有模型类型选择。例如,我有许多类似于此事件和资源模型的模型 VIDEO = 1 AUDIO = 2 IMAGE = 3 ARTICLE = 4 BOOK = 5 DOCUMENT = 6 RESOURCE_CONTENT_CHOICES = ( (VIDEO, _("vide
- 核心(用于保存通用材料)
- 解耦应用程序
- 解耦应用程序
- 解耦应用程序
- 解耦应用程序
VIDEO = 1
AUDIO = 2
IMAGE = 3
ARTICLE = 4
BOOK = 5
DOCUMENT = 6
RESOURCE_CONTENT_CHOICES = (
(VIDEO, _("video")),
(AUDIO, _("audio")),
(IMAGE, _("image")),
(ARTICLE, _("article")),
(BOOK, _("book")),
(DOCUMENT, _("document")),
)
class Resource(models.Model):
title = models.CharField(max_length=256)
resource_content = models.IntegerField(choices=RESOURCE_CONTENT_CHOICES)
url = models.URLField()
PAST = 1
PRESENT = 2
FUTURE = 3
EVENT_TYPE_CHOICES = (
(PAST, _("past")),
(PRESENT, _("present")),
(FUTURE, _("future")),
)
class Event(models.Model):
title = models.CharField(max_length=256)
event_type = models.IntegerField(choices=EVENT_TYPE_CHOICES)
此外,在其他模型中也多次使用元组,如EVENT\u TYPE\u CHOICES
。我还有大约20个其他型号,带有事件类型
类似类型字段
我在想,我可以在核心应用程序中创建types.py文件,并在一个地方为所有类型编写一个dict,这样我就可以轻松地在视图、其他模型等中使用,因为应用程序无论如何都不会在其他项目中重用。但我不确定这是否是最好的方法
那么,什么是使所有内容都可伸缩和干燥的最佳方法呢?这取决于您对代码的预期用途 解耦应用程序的目标是隔离预期可在许多Django项目中普遍重用的功能。但是,你提到: “…无论如何,您的应用不会在其他项目中重复使用” 如果是这样的话,特别是如果应用程序不被认为是很好的重用对象,那么严格地解耦应用程序就没有必要了。因此,在应用程序的核心中使用一个Python文件,其中包含多个模型使用的各种选项列表 像这样:
# choices.py
RESOURCE_CONTENT_CHOICES = (
...
)
EVENT_TYPE_CHOICES = (
...
)
并在需要时进口:
# models.py
from myproject.core.choices import EVENT_TYPE_CHOICES
class Event(models.Model):
# Optional: See additional note below
EVENT_TYPE_CHOICES = EVENT_TYPE_CHOICES
...
event_type = models.IntegerField(choices=EVENT_TYPE_CHOICES)
...
或者,如果你发现你的一些应用程序确实是很好的重用对象,那么将它们分离比干涸更重要。在这种情况下,您应该在该应用程序中维护您的选择,即使某些选择在其他应用程序的其他地方重复
附加说明:使用这两种方法中的任何一种,在模型类中引用选项通常都非常有用。见: