Ссылка на связанный объект в ListView

Я пытаюсь создать своего рода "панель управления". Мне нужно управлять своими объектами прямо из ListView. Я покажу вам прозрачную (я считаю) схему, которую я пытаюсь решить.

модели

class Category(models.Model):
    cat_name = models.CharField(max_length=120)

class Product(models.Model):
    category = models.ForeignKey(Category)
    prod_name = models.CharField(max_length=120)

Просмотры

 class CategoryListView(ListView):
        model = Category

        def get_context_data(self, *args, **kwargs):
            context = super(CategoryListView, self).get_context_data(*args, **kwargs)
            # two class based forms created for models
            context['form_category'] = CategoryForm()
            context['form_product'] = ProductForm()
            return context

        def post(self, request, *args, **kwargs):
            form_category = CategoryForm(request.POST or None)
            if form_category.is_valid():
                new_category = form_category.save(commit=False)
                new_category.save()
                return redirect('category_list')
            return Http404

шаблоны

Я использую два модальных окна, чтобы открыть свои формы, которые я добавил в мои контекстные представления

<button>Modal btton opens product form</button>
{% for category in object_list %}
        <div class="panel">
            <div class="panel-heading">
                <h3>{{ category.cat_name}}</h3>
                <button>Modal btn opens product form</button>               
            </div>
            <div class="panel-body">
               <ul>
               {% for product in category.product_set.all %}
                  <li>
                    <p>{{ product.prod_name }}<p>
                    <span><a href="" class="btn btn-default">Delete</a></span>              

               {% endfor %}
               </ul>   
            </div> 
        </div>
    {% endfor %}

    <form action="." method="POST">{%csrf_token%}
        {{ form_category.as_p }}
        <input type="submit" value="add category">
    </form>

    <form action="." method="POST">{%csrf_token%}
        {{ form_product.as_p }}
        <input type="submit" value="add product">
    </form>

Для первой формы (CategoryForm) она работает нормально, потому что вся страница ссылается на это (модель = Категория). Теперь вопрос - как создать второй объект на этой странице. Я могу сделать это в DetailView, используя URL-адреса и такие параметры, как slug, id или pk, и после передачи его в качестве значения, но я хочу сделать это со страницы, не переходя на страницу с подробностями. Во-вторых, я думал о том, как удалить продукты из списка, но есть та же проблема, что и сообщить django об объекте ведьмы, который я хотел бы удалить.

Благодарю.

0 ответов

Другие вопросы по тегам