【问题标题】:Django combine selectionsDjango 组合选择
【发布时间】:2017-09-27 15:55:52
【问题描述】:

我有以下型号:

class Person(models.Model):
    name = models.TextField() 

class User(models.Model):
    person = models.ForeignKey(Person)
    user_name = models.TextField() 


def match_person(user_list):
    results = []
    for user in user_list:
       user_match = user_name.objects.select_related('person').
                    filter(alias=user).all()
       ....
       results.append(user_match)
return results

一个人可以有一个或多个用户名以及他们自己的名字。 我的 match 方法基本上遍历给定用户名的列表并将用户和相关人员存储在结果中。

由于我的方法只包含 SELECT 查询,我想知道是否可以将我的选择组合到一个查询中以获得更好的性能?

【问题讨论】:

    标签: python-3.x django-models django-queryset


    【解决方案1】:

    values_list 将返回具有所需值的元组列表:

    user_list = ['username1', 'username2', 'username3']
    User.objects.filter(user_name__in=user_list).values_list('user_name','person__name')
    

    会回来

    [('username1', 'person1'), ('username2', 'person1') ...]
    

    附言。对于名称等短字符串,CharField 优于 TextField

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 2017-04-19
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多