我正在开展一个网络项目,而且我对Django和模型背后的想法仍然很陌生。基本上,我想创建允许每个用户保存一组位置的帐户。目前,我已为每个位置(必须对用户唯一)和每个用户创建模型:
class Location(models.Model):
name = models.CharField(max_length=70)
longitude = models.DecimalField(max_digits=7,decimal_places=4)
latitude = models.DecimalField(max_digits=7,decimal_places=4)
custDescription = models.CharField(max_length=500)
custName = models.CharField(max_length=70)
def __unicode__(self):
return self.name
(...)
class User(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
locations = []
(...)
def addLocation(self, Location):
if (Location not in locations):
self.locations += Location
else:
return None
def removeLocation(self, Location):
if (Location in locations):
i = locations.index(Location)
locations.remove(i)
else:
return None
django的模型是否支持我在User.locations中使用的列表,并允许我添加或删除位置?如果没有,将非常感谢有关更有效方法的建议!
答案 0 :(得分:1)
您应该使用ManyToManyField:
class User(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
locations = models.ManyToManyField(Location)
检查您的管理员,我相信您正在搜索它。
答案 1 :(得分:1)
也许您应该查看django docs
你必须做那样的事情
class User(models.Model):
#Your implementation of user
class Location(models.Model):
#....
user = models.ForeignKey(Location)
然后可以访问这样的位置:
u = <some_query_for_a_user>
locations = u.location_set