决定在Django中使用@staticmethod,@property或manager
我想在Django中创建一个简单的基于地理位置的应用程序。 我想将用户的位置保存为他登录的最后一个经纬度。为此,我创建了一个Location类。 要存储其他用户数据,我有一个UserProfile类。 我想保留UserProfile中的位置列。
有三种方法可以实现它 - 使用@property
@staticmethod
, @property
@staticmethod
或经理。 然后定义一个__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()
我会使用一个属性:
class Location(models.Model):
user = models.ForeignKey(User, related_name="locations")
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)
rating = models.IntegerField()
@property
def last_location(self):
return self.locations.latest("date")
# Alternatively: return self.objects.all().order_by("-date")[0]
请注意我添加到Location
模型中的user
字段的related_name
- 它使反向查找更清晰,更易于阅读
编辑 :我改变了查询使用最新()
链接地址: http://www.djcxy.com/p/55153.html上一篇: Deciding to use @staticmethod, @property, or manager in Django