首页 > 解决方案 > 如何从 Django 表单访问 response.user

问题描述

您好我正在尝试访问访问我的表单的用户 ID,以便让他选择从数据库中选择选项。

这是我的表单代码:

from django import forms
from .models import Viajes

class solicitudesFacturas(forms.Form):

    razon_social = forms.CharField(max_length=200)
    ruc = forms.IntegerField()
    viajes_selected = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=listaviajes)

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(solicitudesFacturas, self).__init__(*args, **kwargs)

    def getuser(self):
        user = self.cleaned_data.get('id')
        print(user.id)
        listaviajes = []
        listaviajes2 = Viajes.objects.filter(id=user.id)
        for viajes in listaviajes2:
            elemento = [viajes.ride_ID, str(
                "Desde: " + viajes.pickup_zone + " - hasta: " + viajes.dropoff_zone + " - monto: " + str(
                    viajes.billable_amount) + " - el: " + str(viajes.ride_date))]
            listaviajes.append(elemento)
        print(listaviajes)

        return listaviajes

问题是我不知道如何将 listaviajes 用于 viajes_selected,当我将 viajes_selected 放入 getuser 时,它不会出现在表单中。

请我希望你能帮助我。这是我的 view.py 代码:

@login_required(login_url='/login')
def crear_solicitud(response):
    if response.method == "POST":
        form = solicitudesFacturas(response.POST, user=response.user)

        if form.is_valid():
            razon_social = form.cleaned_data["razon_social"]
            ruc = form.cleaned_data["ruc"]
            viajes_selected = form.cleaned_data["viajes_selected"]
            print(razon_social)
            print(ruc)
            print(viajes_selected)
            print("id usuario: "+str(response.user.id))
            usuario = User.objects.get(id=response.user.id)
            print(usuario)
            solicitud = Solicitudes(razon_social=razon_social, ruc=ruc, status="Solicitado", id=usuario)
            solicitud.save()
            solicitud_id = str(solicitud.id_solicitud)

            for viaje in viajes_selected:
                ride = Viajes.objects.get(ride_ID=viaje)
                print(ride)
                listaviajes = ListaViajes(id_solicitud=solicitud, ride_ID=ride)
                listaviajes.save()

        print("thankyou/%s" %solicitud_id)
        return HttpResponseRedirect("thankyou/%s" %solicitud_id)

    else:
        print("id usuario: "+str(response.user.id))
        return render(response, "DesafioBeat/home.html", {"form": solicitudesFacturas(user=response.user)})

标签: pythonpython-3.xdjangodjango-forms

解决方案


推荐阅读