gpt4 book ai didi

python - Wagtail:将图像添加到自定义用户模型

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:39 24 4
gpt4 key购买 nike

我正在按照 Wagtail 文档找到 customize the user model .我想向用户模型添加图像。

Django 版本:2.0.8,鹡鸰版本:2.1

问题

在使用图像选择器字段选择图像并单击“保存”后,出现此错误:

'没有提交文件。检查表单上的编码类型。'

代码

模型.py

from django.db import models

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
display_image = models.ForeignKey('wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+')

表单.py

from django import forms
from django.utils.translation import ugettext_lazy as _

from wagtail.users.forms import UserEditForm, UserCreationForm
from wagtail.images.widgets import AdminImageChooser

class CustomUserEditForm(UserEditForm):
display_image = forms.ImageField(
widget=AdminImageChooser(), label=_('Autorenbild'))

class CustomUserCreationForm(UserCreationForm):
display_image = forms.ImageField(
widget=AdminImageChooser(), label=_('Autorenbild'))}

编辑.html

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

{% block extra_fields %}
{% include "wagtailadmin/shared/field_as_li.html" with field=form.display_image %}
{% endblock extra_fields %}

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

create.html 类似

到目前为止我尝试了什么

我发现使用AdminImageChooser 小部件的想法here .我必须通过添加 forms.ImageField 来调整表单,以便 User 页面显示无误。

问题

  1. 有人知道错误发生的原因以及如何解决吗?

  2. 如上述 Google 群组帖子所述,向用户模型添加图像似乎“有点尴尬”。将图像连接到用户以在站点中重复使用的更好方法是什么?要求是可以在 Wagtail 管理中轻松更改图像。

Wagtail 2.2 版的其他问题

在管理界面的设置 > 用户中,AdminImageChooser 的窗口不会打开。

控制台显示以下 JS 错误:

未捕获的 ReferenceError:未定义 createImageChooser

最佳答案

在 Django 3.0.7 和 wagtail wagtail 2.9 上,我可以这样解决:

模型.py

class User(AbstractUser):
avatar = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)

表单.py

使用 ModelChoiceField不是 ImageField 很重要,这样您就符合 AdminImageChooser 小部件的要求。

from django import forms

from wagtail.images import get_image_model
from wagtail.images.widgets import AdminImageChooser
from wagtail.users.forms import UserCreationForm, UserEditForm


class CustomUserEditForm(UserEditForm):
avatar = forms.ModelChoiceField(
queryset=get_image_model().objects.all(), widget=AdminImageChooser(),
)


class CustomUserCreationForm(UserCreationForm):
avatar = forms.ModelChoiceField(
queryset=get_image_model().objects.all(), widget=AdminImageChooser(),
)

模板

无需手动加载任何 Javascript。该小部件会为您完成。

任何模板目录/wagtailusers/users/create.html

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

{% block extra_fields %}
{% include "wagtailadmin/shared/field_as_li.html" with field=form.avatar %}
{% endblock extra_fields %}

任何模板目录/wagtailusers/users/edit.html

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

{% block extra_fields %}
{% include "wagtailadmin/shared/field_as_li.html" with field=form.avatar %}
{% endblock extra_fields %}

关于python - Wagtail:将图像添加到自定义用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com