python - Django 处理多个模型的外键
问题描述
class Product(models.Model)
class InventoryItem(models.Model)
class Warehouse(models.Model)
class Store(models.Model)
class Office(models.Model)
class Lab(models.Model)
(... and many more)
class ProductImage(models.Model):
image = models.ImageField()
product = models.ForeignKey(Product, on_delete=models.CASCADE)
class InventoryItemImage(models.Model):
image = models.ImageField()
inventory_item = models.ForeignKey(InventoryItem, on_delete=models.CASCADE)
(... and many more)
我正在尝试添加将多个图像附加到模型的功能。问题是,有 10 多个模型,添加每个模型<modelname>Image
不太适合我。我需要查询和后处理图像,所以我真的更喜欢一个模型来保存整个图像信息。
我尝试搜索并且有几个选项。
- 为.
<modelname>Image
_<modelname>
这似乎完全不对。
- 使用 Django 的
GenericForeignKey
.
我想到了这一点,但是在阅读了这篇博客文章后,我不太确定。
- 一个
Image
模型,ManyToManyField
在所有模型中。
有希望,但不太确定。Django 管理员也没有正确显示图像上传字段。
- 创建虚拟模型,为其建模外键并为其
Image
建模外键。
似乎过于复杂。
这样做的正确方法是什么?欢迎任何新的建议或指南!
解决方案
推荐阅读
- cucumber - 使用不同的之前步骤多次运行单个黄瓜测试
- c++ - 为什么在'return 0'之后调用析构函数?
- android - 如果单击了任何按钮,则阻止用户单击
- html - Boostrap 4 不可折叠项目下拉正在扩展导航栏
- branch.io - 通过 API 从分支导出数据
- java - 要映射的 JAXB 注释类
- svg - Jquery - 多边形父级的可拖动特征包含属性
- cmake - 找不到 CMAKE_CUDA_COMPILER
- laravel - 为什么 Laravel Redis::throttle 无法获得锁时那么慢?
- jquery - 当我在 laravel 中更新时,图像不会被删除