将StreamField添加到自定义用户模型

问题描述

使用Wagtail CMS,我对extending my site's user profiles感兴趣,允许他们添加丰富的内容

我认为StreamFields非常适合。

到目前为止,我已经成功创建了这样的模型:

class User(AbstractUser):
    profile_picture = models.ForeignKey(
        "wagtailimages.Image",null=True,blank=True,on_delete=models.SET_NULL,related_name="+",)
    description = models.TextField(
        blank=True,verbose_name=_("Descripción"),max_length=255
    )

    content = StreamField([
        ("image",blocks.ImageBlock(label=_("Imagen"))),("paragraph",blocks.RichTextBlock(label=_("Biografía"))),("contact",blocks.ContactBlock()),],null=True)
    __original_profile_picture = None

    content_panels = [
        FieldPanel("profile_picture"),FieldPanel("description"),StreamFieldPanel('content'),]

尝试定义要使用的表单时出现问题:

class UserEditForm(CustomUserForm,user_forms.UserEditForm):

    profile_picture = forms.ModelChoiceField(
        Image.objects,required=False,label=_("Imagen de perfil")
    )
    content = StreamFieldPanel("content")  # XXX: This is not a valid form field
    class Meta(user_forms.UserEditForm.Meta):
        pass

很显然,StreamFieldPanel在这里不起作用。但是没有替代字段定义可以使用。

尝试直接在模板中使用该字段会导致'str' object has no attribute 'field'中断。定义如下:

{% extends "wagtailusers/users/edit.html" %}

{% block extra_fields %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.profile_picture %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.description %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.content %}

{% endblock extra_fields %}

{% block extra_js %}
    {{ block.super }}
    {% include 'wagtailadmin/pages/_editor_js.html' %}
    {{ form.media.js }}
{% endblock extra_js %}

似乎流域的结构不适合field_as_li,我不知道该怎么用。

有没有办法为用户admin使用编辑/创建表单中的流字段?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)