Django:有效地保存ManyToMany对象

时间:2015-09-24 22:56:26

标签: python django orm many-to-many manytomanyfield

我有一个停止模型和一个服务模型。它们彼此形成了ManyToMany关系。 这是通过在服务模型中使用stops = models.ManyToManyField(Stop, related_name='services')来完成的。

我想创建新服务并停止,同时尽可能少地进行查询。目前,我就是这样做的:

  1. 使用bulk_create
  2. 创建所有新服务
  3. 使用bulk_create
  4. 创建所有新站点
  5. 从数据库中检索所有服务
  6. 从数据库中检索所有停靠点
  7. 为每个服务添加适当的停靠点
  8. 通过这种方式,步骤5将产生与服务数量一样多的查询。

    是否有更简单的方法来保存ManyToMany关系?另外,我可以在创建后立即检索所有服务并停止吗?

    服务:

    class Service(models.Model):
    
        # Many to many relationship with Stop
        stops = models.ManyToManyField(Stop, related_name='services')
        name = models.CharField(max_length=5, blank=False, unique=True)
        type = models.CharField(max_length=40, blank=False)
        description = models.CharField(max_length=100, blank=False)
    

    停止:

    class Stop(models.Model):
    
        name = models.CharField(max_length=100, blank=False, unique=True)
        latitude = models.FloatField()
        longitude = models.FloatField()
    

0 个答案:

没有答案