Ссылка на связанный объект в 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 об объекте ведьмы, который я хотел бы удалить.
Благодарю.