首页 > 解决方案 > 在 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

标签: djangodjango-modelsdjango-views

解决方案


您得到的原因attribute '_committed'是因为random.choice(avatar)返回UserAvatar模型实例而不是头像文件,

你应该使用类似的东西random_avatar.model_field_name


推荐阅读