0


处理从数据库查找 返回的 0 条记录的最佳方法是什么?

我有 UserDetails 对象(表),它具有
默认 django 用户对象(表)的外键

如何处理 UserDetails 对象(表)中还没有任何
行/记录的用户?

如果我
对 UserDetails 表中具有零行的用户进行此查找,则会收到此错误:

/my-page/ 处的索引错误

列表索引超出范围

@login_required
def my_page(request):
    """ A function to render My Page
    """

    user_details = UserDetails.objects.filter(id=2)[0]

    # Return rendered HTML
    return render_to_response('my_page.html', RequestContext(request,
                                                             {
                                                              'city_town': user_details.city_town,
                                                              'state_province': user_details.state_province,
                                                              }))
# end def
4

1 回答 1

2

您要做的是获取用户详细信息,或返回 None,以便您的模板可以呈现适当的内容。为此,您可以通过捕获尝试检索单个对象的错误并将变量设置为 None 如果它失败。

try:
    user_details = UserDetails.objects.get(id=2)
except UserDetails.DoesNotExist:
    user_details = None

# the rest of your code

然后处理模板中的 None 值:

# template
{% if user_details %}
    # render details
{% else %}
    # render form inputs
{% endif %}
于 2011-04-23T03:21:08.547 回答