【问题标题】:How to store a Django object's method result in my database?如何将 Django 对象的方法结果存储在我的数据库中?
【发布时间】:2011-04-25 16:32:59
【问题描述】:

这里是新手。提前道歉。

我有:

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

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

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

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

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

    首先,为坐标定义一个模型:

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

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

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

    这样您就指定坐标存储在数据库中。

    现在,在您将新地点添加到数据库的视图中,首先创建坐标,然后将地点添加到数据库:

    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, ...)
    

    【讨论】:

    • 谢谢!我最终在 Place 类中使用了 save 方法,因为我使用的是新的通用视图。
    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2010-11-17
    • 2013-06-30
    • 2011-10-22
    • 2018-01-13
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多