Recientemente actualicé Django de 1.3 a 1.8.18 y he tenido problemas con los enlaces personalizados para completar formularios en el administrador de Django. Por ejemplo, tengo el siguiente enlace:
/admin/miscellaneous/whatsnew/add/?title=...%20competition%20results%20uploaded&pub_date=21-04-2017&body=&link= Cuando se ejecuta, los datos precargados en el formulario se ven así: 
Donde debería verse así:
Al probar directamente desde la barra de URL en Safari, cambia a esto después de presionar enter:
https://flyball.org.au/admin/miscellaneous/whatsnew/add/?title=...%2520competition%2520results%2520uploaded&pub_date=21-04-2017&body=&link=modelos.py
class WhatsNew(models.Model): title = models.CharField(max_length=100,help_text='Title, MAX 100 characters.') body = models.TextField() pub_date = models.DateField() message_expiry = models.DateField(default=datetime.date.today() + relativedelta(years=1)) link = models.URLField(blank=True, null=True) class Meta: ordering = ['-pub_date'] verbose_name_plural = "Whats New?" def __unicode__(self): return self.titleadministrador.py
import models from django.contrib import admin class WhatsNewAdmin(admin.ModelAdmin): list_display = ('title','pub_date','message_expiry','link','body') admin.site.register(models.WhatsNew, WhatsNewAdmin)¿Qué puedo hacer para resolver esto?
Por lo tanto, no estoy seguro de cómo hacerlo en ModelAdmin, pero puede crear configuradores personalizados en su modelo para manejar esta situación. Así es como haría para escapar de las cadenas codificadas de URL:
import urllib class WhatsNew(models.Model): # Field with custom setter _title = models.CharField(max_length=100, help_text='Title, MAX 100 characters.', db_column='title') body = models.TextField() pub_date = models.DateField() message_expiry = models.DateField(default=datetime.date.today() + relativedelta(years=1)) link = models.URLField(blank=True, null=True) # Custom getter and setter @property def title(self): return self._title @title.setter def title(self, value): self._title = urllib.unquote(value) class Meta: ordering = ['-pub_date'] verbose_name_plural = "Whats New?" def __unicode__(self): return self._titleUse + en lugar de %20 para el espacio y funciona.
Su enlace debe ser algo como:
/admin/miscellaneous/whatsnew/add/?title=...+competition+results+uploaded&pub_date=21-04-2017&body=&link=