1
我想在Django中創建一個簡單的基於地理位置的應用程序。我想保留用戶的位置作爲他登錄的最後一個緯度/長度。爲此,我創建了一個位置類。要存儲額外的用戶數據,我有一個UserProfile類。我想保留位置列UserProfile以及。決定在Django中使用@staticmethod,@property或manager
有三種實現方法,我可以想到 - 使用@staticmethod
,@property
或經理。然後定義一個__unicode__
方法,該方法將返回帶有最近日期的緯度/經度的列表。這將是最好的方法呢?以下是我的模型:
class Location(models.Model):
user = models.ForeignKey(User)
latitude = models.CharField(max_length=10)
longitude = models.CharField(max_length=10)
date = models.DateTimeField(auto_now_add = True)
class UserProfile(models.Model):
user = models.OneToOneField(User)
location = the_last_login_location
rating = models.IntegerField()
可以請你解釋一下,爲什麼你不會使用@staticmethod或manager? – user993563 2012-08-06 19:19:28
管理器(這是Django的一個功能,不是python)通常意味着對整個表進行操作,而不是對單個行進行操作,而模型的方法或屬性則在該特定行上進行操作。當您正在尋找特定用戶的最後位置,而不是所有用戶最近位置(或類似的)的列表時,這裏的屬性是有意義的。 – 2012-08-06 19:28:11
靜態方法(這是Python和一般編程的一個特性)不能在類的實例上調用(儘管它們可以接受類的實例),因此不能訪問「self」等。它們是用於執行與該類相關的通用操作,但不一定與該實例相關。你會在[Wikipedia](http://en.wikipedia.org/wiki/Static_method#Static_methods)或[SO]上得到更好的定義(http://stackoverflow.com/questions/735975/static-methods-在-蟒蛇) – 2012-08-06 19:34:57