Как создать форму для обновления существующих изображений в экземпляре модели? - PullRequest
0 голосов
/ 19 сентября 2019

Я делаю приложение, которое имеет базовые функции.Родительская модель расширяется дочерней моделью посредством отношения внешнего ключа.Вторая модель рекламирует изображения для первой.У меня есть основной грубый рабочий то есть.добавление изображений и привязка их к первой модели.Мне трудно получить форму дочерней модели, чтобы показать изображения, которые уже были добавлены посредством использования экземпляра.Я хотел бы, если возможно, сохранить представление создания и обновления в одной функции представления.

Я пробовал варианты метода обратного просмотра _set, но я просто получаю другие запутанные ошибки.Это тот, который имеет наибольшее значение для меня.

def add_image(request):
    if 'product_id' in request.GET:
        product_id = request.GET['product_id']
        product = get_object_or_404(Product, id=product_id)
    if request.method == 'POST':
        form = ProductImageForm(request.POST, request.FILES)
        if form.is_valid():
            productimage = form.save(commit=False)
            productimage.product = product
            productimage.save()
            return redirect('dashboard:products')
        else:
            print(form.errors)
    else:
        if product.productimage_set:
            i = product.productimage_set.all()
            form = ProductImageForm(instance=i)
        else:
            form = ProductImageForm()

    return render(request, 'dashboard/add_image.html', {'form': form})


class ProductImageForm(forms.ModelForm):
    class Meta:
        model = ProductImage
        exclude = ['product']

<form method="post" action="" class="width-100" enctype="multipart/form-data">
        {% csrf_token %}
        {% for hidden_field in form.hidden_fields %}
          {{ hidden_field }}
        {% endfor %}
        {% for field in form.visible_fields %}
          <div class="fieldWrapper">
            {{ field.label_tag }}
            {% render_field field class="form-control"%}
            {% if field.help_text %}
              <small class="form-text text-muted">{{ field.help_text }}</small>
            {% endif %}
          </div>
        {% endfor %}
        <br>
        <input class="btn btn-primary btn-rounded btn-block" type="submit" value="Add Images"/>
        <a class="btn btn-light btn-block btn-rounded" href="{% url 'dashboard:products' %}">Cancel</a>
</form>

Мне бы хотелось, чтобы в форме отображались уже добавленные изображения из экземпляра, который я вызываю, если пользователь захочет изменить экземпляр модели.Вместо этого я получаю сообщение об ошибке:

AttributeError at /dashboard/products/add-image/
'QuerySet' object has no attribute '_meta'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...