django - 在 Django UserCreationForm 中为新用户添加一个随机头像
问题描述
我正在尝试从数据库中选择一个随机头像,并在用户单击注册页面上的“注册”按钮时将其添加到用户的帐户中。我尝试在我看来实现这一点,但我不断收到以下错误。
> if file and not file._committed: AttributeError: 'UserAvatar' object
> has no attribute '_committed'
views.py
def signup(request):
...
user = form.save(commit=False)
...
# query the avatars in the database and choose a random one for user
avatar = UserAvatar.objects.all()
random_avatar = random.choice(avatar)
user.avatar = random_avatar
...
user.save()
...
form = CustomUserCreationForm()
return render(request, 'signup.html', {
"title": _('Sign up'),
'form': form,
})
class UserAvatar(models.Model):
name = models.CharField(_('name'), max_length=128)
avatar = models.FileField(_('avatar'), upload_to='media/uploads/avatar')
class Meta:
verbose_name_plural = _('User avatars')
def __str__(self):
return self.name
解决方案
您得到的原因attribute '_committed'
是因为random.choice(avatar)
返回UserAvatar
模型实例而不是头像文件,
你应该使用类似的东西random_avatar.model_field_name
推荐阅读
- python - 从命令行运行 Eclipse IDE Python 项目
- kubernetes - 自动配置的节点池未清理
- php - 如何打开 Laravel Backpack 管理页面?
- python - 从 0 到 20 的随机数生成器,用户输入一个可以为真或假的数字
- pyqt5 - 使用 qt 设计器创建的主应用程序中不会出现升级的小部件
- c++ - 如何计算矩阵 NxN 的行列式?[递归]
- python - 如何从请求中覆盖urllib3中的respect_retry_after_header?
- ios - 为什么我们不让类线程的每个属性都正常安全呢?
- amazon-web-services - 如何使用 Docker compose File 在 AWS 中进行部署
- javascript - 在 swiperjs 中延迟加载时如何显示质量较低的背景图像?