Estoy usando las traducciones de wagtail descritas aquí para algunos de mis modelos de página. Están funcionando como se esperaba. Estoy agregando un formulario a través del generador de formularios . Puedo acceder a los formularios a través de la URL www.domain.com/slug, pero cuando lo completo, la URL se redirige a una URL de Ninguno. También en el administrador, si hago clic en el botón EN VIVO, también se dirige a una URL de Ninguno.
Supuse que tenía que ver con no estar conectado a las traducciones porque, de forma predeterminada, eso es agregar un slug de URL para cada idioma en el panel de promoción de una página. Así que conecté el modelo de formulario a las traducciones y los paneles de contenido obtienen las traducciones correctas, pero el panel de promoción solo recibe un campo de slug. No hay otros campos para los diferentes idiomas.
El botón EN DIRECTO todavía da Ninguno y cuando envío el formulario en la página, se redirige a una página de Ninguno con un error. Nuevamente, todas mis otras páginas que están conectadas con las traducciones funcionan como se esperaba.
Supongo que los formularios de Wagtail no son totalmente compatibles con las traducciones. Con una internacionalización como esta, ¿es un asunto de todo o nada? ¿No puedo dejar los formularios fuera de la situación de las traducciones?
Entonces, después de examinar más el problema, tuve que importar Page a la clase AbstractEmailForm para que funcionara. Esto es literalmente lo que se toma de los documentos de Wagtail y se agrega la página.
from modelcluster.fields import ParentalKey from wagtail.wagtailadmin.edit_handlers import ( FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel ) from wagtail.wagtailcore.models import Page from wagtail.wagtailcore.fields import RichTextField from wagtail.wagtailforms.models import AbstractEmailForm, AbstractFormField class FormField(AbstractFormField): page = ParentalKey('FormPage', related_name='form_fields') class FormPage(AbstractEmailForm, Page): intro = RichTextField(blank=True) thank_you_text = RichTextField(blank=True) content_panels = AbstractEmailForm.content_panels + [ FieldPanel('intro', classname="full"), InlinePanel('form_fields', label="Form fields"), FieldPanel('thank_you_text', classname="full"), MultiFieldPanel([ FieldRowPanel([ FieldPanel('from_address', classname="col6"), FieldPanel('to_address', classname="col6"), ]), FieldPanel('subject'), ], "Email"), ]Wagtail translations necesita usar Page para cambiar las URL. Esto soluciona el problema Ninguno.