0

I'm using Django to upload user avatar,my question is ,how to remove the default string " urrently: avatar/default.png Clear " from template

Model:

class User(AbstractUser):
    nickname1 = models.CharField(max_length=30, blank=True, null=True, verbose_name='昵称')
    url = models.URLField('个人网址', blank=True, help_text='提示:网址必须填写以http开头的完整形式')
    avatar = ProcessedImageField(upload_to='avatar', default='avatar/default.png', verbose_name='头像',
                                 processors=[ResizeToFill(100, 100)],  # 处理后的图像大小
                                 format='JPEG',  # 处理后的图片格式
                                 options={'quality': 95}  # 处理后的图片质量
                                 , blank=True
                                 )
    identifier = models.CharField(max_length=40, unique=True,blank=True, null=True)
    ...
    USERNAME_FIELD = 'identifier'

    def save(self, *args, **kwargs):
        if len(self.avatar.name.split('/')) == 1:
            self.avatar.name = self.username + '/' + self.avatar.name
        super(User, self).save()


    class Meta:
        verbose_name = '用户信息'
        verbose_name_plural = verbose_name 
        ordering = ['-id']
    def __str__(self):
        return self.username

url:

path('<str:username>/', views.account_profile,name = 'process'),

view.py:

@login_required
def account_profile(request, username):
    profile_user = get_object_or_404(User, username=username)
    messages = []
    
    if request.method == 'POST':
       
        form = UserDetailForm(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            messages.append('资料修改成功!')
    form = UserDetailForm(instance=request.user)
    return render(request, 'user/user_detail.html', context={'form': form,
                                                             'messages': messages,
                                                            'profile_user': profile_user,})

form:

class UserDetailForm(ModelForm):
    class Meta:
        model = User
        fields = ['avatar',]

template:

<form class="profile" method="post" enctype="multipart/form-data" 
        action="/<str:username>/">
        {% csrf_token %}
        {{ form|crispy }}
        <div class="avatar">
            <img class="img-rounded" src="{{ request.user.avatar.url }}">
        </div>
        <button class="primaryAction" type="submit">更新资料</button>
    </form>

In the form I only set filed avatar there,but there is always a string " Currently: avatar/default.png Clear "

Any friend know how to remove this string?

William
  • 3,724
  • 9
  • 43
  • 76

1 Answers1

0

It's probably best to override this template: django/forms/widgets/clearable_file_input.html

And remove this bit:

{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>

You can override the initial text by subclassing the widget django.forms.widgets.ClearableFileInput, but that will still render the previous value (without a label).