拥有以下型号:
User(models.Model):
...
login = ...
Asset(models.Model):
user = models.ForeignKey(User)
...
如何使用django QuerySet功能选择用户登录资产查询。例如:
Asset.objects.extra(select = {'user_login' : 'user__login'})
使用每个模型对象中的user_login字段返回查询集
答案 0 :(得分:0)
每个Asset
对象都有一个用户的外键。所以你总是可以访问 -
asset = Asset.objects.get(pk=any_id)
if asset.user.login == 'some_value':
do_some_magic()
答案 1 :(得分:0)
使用.select_related('user')
在单个查询中选择所有资产和相关用户。然后只需通过asset.user.login
访问它。
assets = Asset.objects.selec_related('user').filter(<any filter>)
for asset in assets:
# no additional queries here, as the user objects are preloaded into memory
print asset.user.login
答案 2 :(得分:0)
我找到了以下解决方案:
Asset.object.extra( select = {'user_login' : '`%s.%s`' % (User._meta.db_table, 'login') } ).order_by('user__login')
order_by表达式用于在User的模型表上创建JOIN,而用户的登录可以在user_table.login中的SELECT表达式中访问