【问题标题】:Django Query for Many to Many RelationshipDjango查询多对多关系
【发布时间】:2015-10-26 09:13:54
【问题描述】:

我有以下型号。

class user(models.Model):
    location = models.ManyToManyField(Locations, blank=True, null=True)

class Locations(models.Model):
    location_id = models.AutoField(primary_key=True, verbose_name='location Id')
    location_name = models.CharField(max_length=512, unique=True, null=True, blank=True, verbose_name='location Name')

我想获取特定用户的所有位置。我写了这个查询

location_list = user.location.through.objects.values('locations_id', 'locations,').filter(user_id=user_id)
    pprint.pprint(location_list)

它给出了这个结果; [<user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>, <user_location: user_location object>]

【问题讨论】:

  • location.through 是什么?
  • 引用此http://stackoverflow.com/questions/14306427/django-accessing-raw-many-to-many-created-table-fields
  • user.location.all() 怎么样?它会为您提供特定用户的所有位置。
  • 如果将名称更改为正确的复数形式将有助于清晰:location = -> locations =class Locations -> class Location

标签: django orm many-to-many


【解决方案1】:

以下代码应为您提供特定用户的位置。

location_list = user.location.all()

然后在您的模板中,您必须迭代对象以便对此产生影响

    {% for locations in locations_list %}
       {{ locations }}
    {% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 2021-03-07
    • 2019-05-18
    • 2017-02-02
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多