如何正确管理django模型关系?
这里我正在制作一些旅游套餐系统。一个套餐会有图库。当然图库会有多个图像,所以我决定在这里使用如何正确管理django模型关系?,django,django-models,orm,Django,Django Models,Orm,这里我正在制作一些旅游套餐系统。一个套餐会有图库。当然图库会有多个图像,所以我决定在这里使用ManyToOne关系。但我也想过在这两个模型之间使用OneToOne关系,因为我们可以通过django表单一次上传多个图像 那么,在这里什么关系最好 class TourPackage(models.Model): name = models.CharField(max_length=255) package_start_date = models.DateTimeFi
ManyToOne
关系。但我也想过在这两个模型之间使用OneToOne
关系,因为我们可以通过django表单一次上传多个图像
那么,在这里什么关系最好
class TourPackage(models.Model):
name = models.CharField(max_length=255)
package_start_date = models.DateTimeField()
price = models.FloatField(default=0.0)
facilities = models.TextField()
class PackageGallery(models.Model):
package = models.ForeignKey(TourPackage,on_delete=models.CASCADE)
images = models.ImageField(upload_to='gallery')
我认为你应该使用多对一关系。因为每个包可以有多个图像一对一关系仅适用于只有一张图片的包装
有关更多详细信息,请访问我认为您应该使用多对一关系。因为每个包可以有多个图像一对一关系仅适用于只有一张图片的包装
有关更多详细信息,请访问在我看来,您创建的
多通
关系是正确的,因为您可能希望能够将多个图像添加到一个旅行包
请注意:
或PackageImage
将是比gallery更好的名称(一个实例是单个图像,而不是gallery)PackageGalleryItem
应更改为图像
图像
- 如果将相关的名称添加到
,则可以通过该名称查询包
的图像,如旅游包
包.图像
- 请确保缩进是正确的,因为现在,
缩进不正确,但这可能是过去版本的副本class PackageGallery(models.Model):
class TourPackage(models.Model):
name = models.CharField(max_length=255)
package_start_date = models.DateTimeField()
price = models.FloatField(default=0.0)
facilities = models.TextField()
class PackageImage(models.Model):
package = models.ForeignKey(TourPackage,on_delete=models.CASCADE, related_name='images')
image = models.ImageField(upload_to='gallery')
在我看来,您创建
manytone
关系是正确的,因为您可能希望能够将多个图像添加到一个TourPackage
请注意:
或PackageImage
将是比gallery更好的名称(一个实例是单个图像,而不是gallery)PackageGalleryItem
应更改为图像
图像
- 如果将相关的名称添加到
,则可以通过该名称查询包
的图像,如旅游包
包.图像
- 请确保缩进是正确的,因为现在,
缩进不正确,但这可能是过去版本的副本class PackageGallery(models.Model):
class TourPackage(models.Model):
name = models.CharField(max_length=255)
package_start_date = models.DateTimeField()
price = models.FloatField(default=0.0)
facilities = models.TextField()
class PackageImage(models.Model):
package = models.ForeignKey(TourPackage,on_delete=models.CASCADE, related_name='images')
image = models.ImageField(upload_to='gallery')
我还考虑在这两个模型之间使用OneToOne关系,因为我们可以通过django表单一次上传多个图像
这不会改变任何关系的基数。ImageField
只存储关于一个图像文件的数据(应该是这样的),编写视图和表单/表单集以允许多次上载只意味着您将一次创建多个PackageGallery
。这里没有什么神奇的
哦,是的:我完全同意尼科·格里芬(Nico Griffoien)关于命名的评论(包括模型和字段)
我还考虑在这两个模型之间使用OneToOne关系,因为我们可以通过django表单一次上传多个图像
这不会改变任何关系的基数。ImageField
只存储关于一个图像文件的数据(应该是这样的),编写视图和表单/表单集以允许多次上载只意味着您将一次创建多个PackageGallery
。这里没有什么神奇的
哦,是的:我完全同意尼科·格里芬(Nico Griffoien)关于命名的评论(包括模型和字段)