0


データベース ルックアップから 返された 0 レコードを処理する最善の方法は何ですか?


デフォルトのdjangoユーザーオブジェクト(テーブル)への 外部キーを持つUserDetailsオブジェクト(テーブル)があります


UserDetails オブジェクト (テーブル) に行/レコードを まだ持っていないユーザーを処理するにはどうすればよいですか?


UserDetails テーブルに行 がないユーザーでこのルックアップを行うと、次のエラーが発生します。

/my-page/ の IndexError

範囲外のリスト インデックス

@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 に答える