问题描述
使用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 (将#修改为@)