在django模型中保存列表

时间:2014-06-22 19:59:19

标签: python django django-models database-table

我正在开展一个网络项目,而且我对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中使用的列表,并允许我添加或删除位置?如果没有,将非常感谢有关更有效方法的建议!

2 个答案:

答案 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