3

データの表示、保存、または更新を処理する目的で、ビューに次のコードがあります。

コードは手に負えないように見え、単純化できるようです。上記の要件を達成するために、自分自身を繰り返さず、できるだけ単純なロジックを使用するにはどうすればよいですか?

def details(request, pk=None):
    customer = request.user.customer
    existing_detail = Detail()
    detail_queryset = Detail.objects.filter(customer_id=customer.id)

    if detail_queryset:
        existing_detail = detail_queryset[0]

    if request.method == 'POST':
        form = detailForm(request.POST)
        if form.is_valid():
            pay_out = form.cleaned_data['title']
            if detail_queryset:
                existing_detail.title = title
                existing_detail.save()
            else:
                detail = Detail(customer=customer, payoutType=title)
                detail.save()
            return HttpResponseRedirect('/settings/details/')
    else:
        if detail_queryset:
            form = detailForm(initial={'title': existing_detail.title})
        else:
            form = detailForm()

    context = {
        'title':'details',
        'view':'detail',
        'form': form
    }
    return render(request, 'customers/detail.html', context)
4

1 に答える 1