将图像名称保存到数据库中-Django
我在Django网站上有以下班级模式:将图像名称保存到数据库中-Django,django,database,Django,Database,我在Django网站上有以下班级模式: class Buy(models.Model): category = models.ForeignKey(Category, related_name='sell', on_delete=models.CASCADE) title = models.CharField(max_length=100) image = models.FileField() image2 = models.FileField(blank=Tru
class Buy(models.Model):
category = models.ForeignKey(Category, related_name='sell', on_delete=models.CASCADE)
title = models.CharField(max_length=100)
image = models.FileField()
image2 = models.FileField(blank=True)
description = models.CharField(max_length=300)
date = models.DateField(default=timezone.now)
buy_price = models.DecimalField(max_digits=6, decimal_places=2)
sell_price = models.DecimalField(max_digits=6, decimal_places=2)
seller = models.ForeignKey(Seller, on_delete=models.PROTECT)
showcase = models.BooleanField(default=False)
如您所见,我存储的照片文件有两个字段:image和image2。但现在我的客户要求我添加更多照片。我的疑问是:
图像
模型,该模型与您的购买
模型相关。如果您预计图像可能会在多个Buy
模型实例中重用,请使用多对多关系;否则,请使用多对一(即ForeignKey
)。这意味着从您的购买
模型中删除图像
和图像2
,然后创建例如:
class Image(models.Model):
image = models.FileField()
image_type = models.CharField()
buy = models.ForeignKey(Buy, on_delete=models.PROTECT)
所谓#2,如果您的意思是考虑跳过使用FileField
或ImageField
来编写代码来搜索某些存储空间中的文件,那么这听起来不是一个好主意,因为这样会将文件(元数据)数据与数据库的其余内容分离。使用FiledField
/ImageField
还可以更轻松地使用AWS S3等存储后端。在#1上,最佳做法是遵循原则,创建一个单独的图像
模型,该模型与您的购买
模型相关。如果您预计图像可能会在多个Buy
模型实例中重用,请使用多对多关系;否则,请使用多对一(即ForeignKey
)。这意味着从您的购买
模型中删除图像
和图像2
,然后创建例如:
class Image(models.Model):
image = models.FileField()
image_type = models.CharField()
buy = models.ForeignKey(Buy, on_delete=models.PROTECT)
所谓#2,如果您的意思是考虑跳过使用FileField
或ImageField
来编写代码来搜索某些存储空间中的文件,那么这听起来不是一个好主意,因为这样会将文件(元数据)数据与数据库的其余内容分离。使用FiledField
/ImageField
还可以更轻松地使用AWS S3等存储后端