problemas con un success_url

128 views
Skip to first unread message

Iago Otero

unread,
Mar 5, 2022, 9:59:50 PM3/5/22
to djan...@googlegroups.com
me esta matando un formulario que no quiere ir a la success_url

lo he hecho mas de diez en veces en este proyecto..y todas esas veces ha funcionado bien....

este es la view que carga, tb tiene un get_context_data y un form_valid, pero no lo pongo pork es un pelin grande

he probado con reverse, con reverse_lazy, y lo he puesto igual que en otros formularios CREATEVIEW y DETAILVIEW que si funcionan

estas son las url
urlpatterns = [

path('destacar/<slug>/<int:pk>',login_required(views.Ticket_DES_ANUNCIO.as_view()),name='Destacar_1'),
path('destacado/<slug>/<int:pk>', login_required(views.Destacado_D.as_view()), name='ANU_DES_TICK'),

]
esto carga el formulario
class Ticket_DES_ANUNCIO(CreateView):
model = Ticket_DES_ANU
form_class = destacar
template_name = 'destacar_1.html'
def get_success_url(self):
return reverse('ANU_DES_TICK', kwargs={'slug': self.object.slug, 'pk': self.object.pk})
y esta es la view que no carga
class Destacado_D(DetailView):
template_name = 'destacar_detail.html'
model = Ticket_DES_ANU
el resultado de rellenar el CreateView es que me mantiene en la pagina,
no quiere ir al success_url
he probado a poner el action en la etiqueta form del html...tal que asi 
{% url 'ANU_DES_TICK' slug pk %}  y el resultado era un 405

llevo ya dos horas dandole vueltas...y ya no se por donde cogerlo

alguna idea?

carlos

unread,
Mar 6, 2022, 11:33:32 PM3/6/22
to djan...@googlegroups.com
Hola, 
en tu vista basada en clase existe 

success_url = reverse('path.to.your.create.view')

probalo en vez de reescribir el método
saludos

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-es/CAJ_xkV%2BwC4i12jccLUzOGJLQHq_oJ4h0fv4CGTUaEfGxKUxXiA%40mail.gmail.com.


--
att.
Carlos Rocha

Iago Otero

unread,
Mar 13, 2022, 4:50:25 PM3/13/22
to djan...@googlegroups.com
hola

si se que existe success_url, lo malo que si lo declaro en la vista como variable, no puedo indicar el argumento pk del objeto, por eso he de reescribir el 

def get_success_url

mira, he cambiado...alguna cosa. y aun asi no avanza al detail view y no se porqué!!!

el formulario es algo asi..selecciono las opciones o lo dejo vacio...y me marca correcto en los inputs, pero no avanza.

image.png

class Destacado_D(DetailView):

template_name = 'destacar_detail.html'
model = Ticket_DES_ANU


class Ticket_DES_ANUNCIO(CreateView):

model = Ticket_DES_ANU
form_class = destacar
template_name = 'destacar_1.html'

    def get_success_url(self, **kwargs):
return reverse_lazy('ANU_DES_TICK', kwargs={'pk': self.object.pk})

Lo que quiero es entrar en el detail view...

el models viene siendo este..le puse un get_absolute_url


class Ticket_DES_ANU(models.Model):

usu = models.ForeignKey(Perfil, on_delete=models.CASCADE)
choi = {'7 dias(precio:3€)': '7 dias(precio:3€)', '15 dias(precio:5€)': '15 dias(precio:5€)',
'30 dias(precio:10€)': '30 dias(precio:10€)', '60 dias(precio:20€)': '60 dias(precio:20€)'}
dias = models.CharField('Aumenta la visibilidad del anuncio (IVA incluido)', choices=choi.items(), max_length=100,
blank=True)
choi_top = {'7 dias(precio:3€)': '7 dias(precio:3€)', '15 dias(precio:5€)': '15 dias(precio:5€)',
'30 dias(precio:10€)': '30 dias(precio:10€)',
'Cada semana durante 2 meses(precio:5€)': 'Cada semana durante 2 meses(precio:5€)'}
top = models.CharField('Mover mi anuncio al principio de la lista(IVA incluido)', max_length=200,
choices=choi_top.items(), blank=True)
imp_choi = {'2 meses(precio 5€)': '2 meses(precio 5€)'}
importante = models.CharField('Logotipo URGENTE (IVA incluido)', max_length=150, choices=imp_choi.items(),
blank=True)
slug = models.CharField('Slug', max_length=50, blank=True, null=True)
anu_PYP = models.ForeignKey(PYP, on_delete=models.DO_NOTHING, blank=True, null=True)
anu_SERV = models.ForeignKey(Servicios, on_delete=models.DO_NOTHING, blank=True, null=True)
anu_EMP = models.ForeignKey(Empleo, on_delete=models.DO_NOTHING, blank=True, null=True)
anu_OPN = models.ForeignKey(OpNegocio, on_delete=models.DO_NOTHING, blank=True, null=True)

fecha_cre_dias = models.DateTimeField('Fecha creación visibilidad', auto_now=True)
fecha_cierre_dias = models.DateTimeField('Fecha cierre visibilidad', null=True, blank=True)

fecha_cre_TOP = models.DateTimeField('Fecha creación top', auto_now=True)
fecha_cierre_TOP = models.DateTimeField('Fecha cierre top', null=True, blank=True)

fecha_cre_imp = models.DateTimeField('Fecha creación importancia', auto_now=True)
fecha_cierre_imp = models.DateTimeField('Fecha cierre importancia', null=True, blank=True)
visibilidad = models.BooleanField(default=False)
top_lista = models.BooleanField(default=False)
urgente = models.BooleanField(default=False)
importe=models.FloatField('Importe')

def get_absolute_url(self):
return reverse('ANU_DES_TICK',kwargs={'pk':self.pk})
pero no se como llamarla desde el formulario, en otros casos he dejado el formulario sin action, y deberia enviarlo al success_url, 
o mediante el metodo get_success_url, pero me mantiene en el template del formulario y no avanza al detail...me esta volviendo loco...
ya lo he hecho bien como 10 veces en este proyecto, pero este se me resiste, y no veo que hago de diferente. No caigo en que 
estoy haciendo mal
    <FORM style="width: 40%" action="" method="post" enctype="multipart/form-data" >
{% csrf_token %}

{% bootstrap_form form %}
<input type="submit" value="Crear Ticket de Pago" />
</form>

Reply all
Reply to author
Forward
0 new messages