Python: ¿cómo puedo obtener una identificación de request.POST del formulario que estoy enviando ahora?

CorePress2024-01-25  13

Estoy construyendo un sistema de gestión clínica y en la sección en la que agrega un nuevo médico, quiero que el administrador pueda agregar los días en los que el médico está disponible, lo que significa que el campo de días es una lista, pero Django no tiene un campo de lista en su modelos, así que creé CharField-> días días = modelos.CharField(max_length=200,null=True) y luego creé un campo de entrada de selección múltiple dentro del formulario

 <select name="days" class="form-select" multiple aria-label="multiple select example">
        <option value="mon">Mon</option>
        <option value="sun">sun</option>
        <option value="wed">wed</option>
       <option value="etc">etc</option>
      </select>
   

así que tomé los datos seleccionados usando este código

for i in request.POST.getlist("days"):
    d= str(i)+" "+d
    print(d) # result gonna be the days in string value splited by spaces  eg : mon sun wed

así que puedo usarlo más tarde usando split() pero el problema es que no puedo agregar estos datos al formulario mientras lo envío, así que pensé que podía guardar los datos del formulario y luego modificar los días de campo. así

def add_doctor(request):
    form = Add_doctorForm()
    if request.method == "POST":
        form = Add_doctorForm(request.POST)
        if form.is_valid():
            form.save()
            d = ""
            for i in request.POST.getlist("days"):
                d= str(i)+' '+d
            print(d)
            formdata = Doctors.objects.get(id = request.POST.get("id")
            formdata.days = d

pero el problema es la solicitud. POST no contiene ningún dato sobre la identificación porque la identificacióntoma su valor de la base de datos por lo que la solicitud de publicación no conoce la identificación ¿Alguien puede ayudarme a encontrar otra forma de solucionar este problema?



------------------------------------

Depende mucho de cómo se define tu formulario.

Si tienes un ModelForm, entonces esto no debería ser un problema, así que supongo que no tomaste ese camino.

Entonces, en el caso que no sea ModelForm, sugeriría el siguiente enfoque:

Agregue una entrada oculta en su formulario para almacenar la identificación del médico en cuestión, es decir, use una entrada oculta en su formulario y complétela con la identificación del médico al presentar el formulario. Luego puede obtenerlo a través del formulario y recuperar al médico en cuestión.n (accede a los datos a través de request.POST pero puede/debe obtenerlos a través de clean_data, que está disponible después de llamar a is_valid()).

1

Lo intenté, pero la cuestión es que no sabía cómo darle la identificación del médico y cómo puedo obtenerla si la entrada toma la identificación de la base de datos, por lo que es necesario importar la entrada antes. agregando el valor de los días, por eso quería obtener la identificación de la entrada después de guardarla y luego agregarle los días como una actualización

- Shawky Aladdin

28/03/2021 a las 15:02



------------------------------------

Ya lo tengo, no necesito obtener la identificación de la solicitud.POST Puedo obtener la última identificación en la base de datos y luego hacer +1 para que sea la identificación del médico actual. así de simple

c_id = int(Doctors.objects.latest('id').id)+1

y eso es todo gracias Yvesonline, me inspiraste a pensar en otra forma de obtener el valor de identificación. Gracias por ayudarme.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare