Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确管理django模型关系?_Django_Django Models_Orm - Fatal编程技术网

如何正确管理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
    PackageGalleryItem
    将是比gallery更好的名称(一个实例是单个图像,而不是gallery)
  • 图像
    应更改为
    图像
  • 如果将相关的名称添加到
    ,则可以通过该名称查询
    旅游包
    的图像,如
    包.图像
  • 请确保缩进是正确的,因为现在,
    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
    PackageGalleryItem
    将是比gallery更好的名称(一个实例是单个图像,而不是gallery)
  • 图像
    应更改为
    图像
  • 如果将相关的名称添加到
    ,则可以通过该名称查询
    旅游包
    的图像,如
    包.图像
  • 请确保缩进是正确的,因为现在,
    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)关于命名的评论(包括模型和字段)