如何将Django对象的方法结果存储在我的数据库中?

时间:2011-04-25 16:33:00

标签: django django-models django-views

纽布在这里。提前道歉。

我有:

class Place(models.Model):
  address = models.CharField(max_length=100)
  [...]
  def coordinates(self):
    location = Location(self.address)
    return location

“位置”方法有效并且不是问题。我可以在模板中看到Place.coordinates,但我希望能够将它们存储在数据库中,因此在views.py中访问它们。

我的问题是,如何在我的数据库中存储坐标,以便只进行一次计算(最初填写表格时)?

谢谢! (而且我已经阅读了所有的文档,很可能我已经阅读了解决方案并且只是不理解它,所以如果这很明显,那么你将不得不原谅我)

1 个答案:

答案 0 :(得分:4)

首先,定义坐标的模型:

class Coordinates(models.Model):
   [whatever coordinates consist of]

然后将coordinates作为字段添加到Place模型。

class Place(models.Model):
   address = models.CharField(max_length=100)
   [...]
   coordinates = models.ForeignKey(Coordinates)

通过这种方式,您已指定坐标存储在db。

现在,在向数据库添加新Place的视图中,首先创建Coordinates,然后将Place添加到数据库:

def add_place(form):
   address = form.cleaned_data['address']
   coordinates = Coordinates.objects.get_or_create(Location(address))
   [...]
   place = 
      Place.objects.get_or_create(address=address, coordinates=coordinates, ...)