Почему формы .ModelForm потери данных из FileField в Django 2.0 - PullRequest
0 голосов
/ 06 июля 2018

У меня есть CustomForm, который простирается от forms.ModelForm, и использую FileField, например:

avatar = forms.FileField(required=False, label="avatar")

Когда я сохраняю модель, все работает, и файл сохраняется в каталоге. Но когда я снова вхожу в поле зрения (файл находится там) и просто нажимаю «Сохранить», файл теряется. Мой views.py это:

def edit_user(request):
    if request.method == "POST":
        form = CustomForm(request.POST, request.FILES)
        if form.is_valid():
            user = form.save(commit=False)
            user.save()
    else:
        user= User\
            .objects\
            .get_or_create(user=request.user,
                           defaults={'name':request.user.first_name,
                                     'email':request.user.email})
        form = CustomForm(instance=user)

        return render(request, 'user.html', {'form':form, 'user':user})

Я использую Python 3.6 и Django 2.0.

HTML:

<form method="post" action="{% url 'myprofile' %}"
                              class="form-horizontal" role="form"
                              enctype="multipart/form-data">
                            {% csrf_token %}
                            {% for field in form %}
                                <div class="form-group row">
                                    <label class="col-2 col-form-label">{{ field.label_tag }}</label>
                                    <div class="col-10">
                                        {% render_field field class+="form-control" %}
                                        {% if field.errors %}
                                            <br/>
                                            {% for error in field.errors %}
                                                <div class="alert alert-danger alert-dismissable">
                                                    <p><strong>{{ error|escape }}</strong></p>
                                                </div>

                                            {% endfor %}
                                        {% endif %}
                                    </div>
                                    {% if field.help_text %}
                                        <p class="help">{{ field.help_text|safe }}</p>
                                    {% endif %}
                                </div>
                            {% endfor %}
                        <input type="submit" value="{% trans 'save' %}" >
                        </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...