Django - ImageField 应该内置到同一个应用程序中,还是在单独的应用程序中实现?
Django - should ImageField be built-in to same app, or implemented in a separate app?
例如,有两个应用程序 cars
和 houses
,它们目前都具有 models.ManyToManyField
到具有 models.ImageField(upload_to='img/[APP_NAME]
的模型。
与其复制和粘贴那段 ImageField
代码,不如将图片上传拆分到一个单独的应用程序中并导入它是否更好?它应该是什么样子?
您的问题没有明确的答案。这在很大程度上取决于您想要实现的目标。
制作一个单独的应用程序,只知道图像,你会遇到以下问题:
- 您的
cars
和 houses
需要不同的 upload_to
。您将需要动态设置它。 Example.
- 您的图像模型(带有
ImageField
的图像模型)将通过 related_name
属性 了解 cars
和 houses
。我不觉得它有什么好处。要去除反向引用,您可以指定 ManyToMany(..., related_name="+")
。注意:"+"
表示没有给出相关名称,不应自动生成。但去掉它的合理性也值得商榷。
- 再多一个应用程序,它...好吧,没什么。为您的每个应用增加一个依赖项。
在你那里,我只留下两张模特图片,一张在 cars
,一张在 houses
。这是在考虑您必须编写的样板代码数量以及您无缘无故为自己制造的问题数量。
例如,有两个应用程序 cars
和 houses
,它们目前都具有 models.ManyToManyField
到具有 models.ImageField(upload_to='img/[APP_NAME]
的模型。
与其复制和粘贴那段 ImageField
代码,不如将图片上传拆分到一个单独的应用程序中并导入它是否更好?它应该是什么样子?
您的问题没有明确的答案。这在很大程度上取决于您想要实现的目标。
制作一个单独的应用程序,只知道图像,你会遇到以下问题:
- 您的
cars
和houses
需要不同的upload_to
。您将需要动态设置它。 Example. - 您的图像模型(带有
ImageField
的图像模型)将通过related_name
属性 了解cars
和houses
。我不觉得它有什么好处。要去除反向引用,您可以指定ManyToMany(..., related_name="+")
。注意:"+"
表示没有给出相关名称,不应自动生成。但去掉它的合理性也值得商榷。 - 再多一个应用程序,它...好吧,没什么。为您的每个应用增加一个依赖项。
在你那里,我只留下两张模特图片,一张在 cars
,一张在 houses
。这是在考虑您必须编写的样板代码数量以及您无缘无故为自己制造的问题数量。