首页 > 解决方案 > 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不太适合我。我需要查询和后处理图像,所以我真的更喜欢一个模型来保存整个图像信息。

我尝试搜索并且有几个选项。

  1. 为. <modelname>Image_<modelname>

这似乎完全不对。

  1. 使用 Django 的GenericForeignKey.

我想到了这一点,但是在阅读了这篇博客文章后,我不太确定。

  1. 一个Image模型,ManyToManyField在所有模型中。

有希望,但不太确定。Django 管理员也没有正确显示图像上传字段。

  1. 创建虚拟模型,为其建模外键并为其Image建模外键。

似乎过于复杂。

这样做的正确方法是什么?欢迎任何新的建议或指南!

标签: pythondjango

解决方案


推荐阅读