我想从查询集中获取对象
accounts = group.get_external_accounts(include_sub_groups=True)
try:
account: StripeExternalAccount = accounts.get(account_id)
except StripeExternalAccount.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
我已经尝试过了。它工作正常,但我想通过尝试来做到这一点
account: StripeExternalAccount = None
for acc in accounts:
if acc.id == int(account_id):
account = acc
break
if not account:
return Response(status=status.HTTP_400_BAD_REQUEST)
答案 0 :(得分:2)
顾名思义,.values_list()
返回值list
,而list
对象没有.get()
方法。如果get_external_accounts
返回一个查询集,则只需在查询集上使用.get()
:
accounts = group.get_external_accounts(include_sub_groups=True)
try:
account: StripeExternalAccount = accounts.get(id=account_id)
except StripeExternalAccount.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
如果稍后在代码中需要帐户ID列表,则可以添加:
account_ids = accounts.values_list('id')
可能值得指出的是,使用accounts.get()
获取单个项目,并使用accounts.values_list('id')
获取所有ID的列表将对数据库执行两次查询。>
如果您有多个具有相同ID的帐户,并且想要获取第一个帐户,请使用
account: StripeExternalAccount = accounts.filter(id=account_id).first()