Я пытаюсь завершить эту функцию моего проекта Django.Я уже создал представление списка, и я могу щелкнуть тему в представлении списка и перейти к подробному представлению.Как только я перейду к подробному представлению этой темы, появится список элементов, связанных с этой темой.В верхней части страницы у меня есть форма, которая при отправке создаст элемент и поместит его в конец списка элемента в том же подробном виде.Для каждого пункта есть список подпунктов.Для каждого подпункта я пытаюсь создать для него кнопку отправки.Поэтому, когда я нажимаю кнопку «Отправить», этот подпункт будет добавлен в конец списка, в котором он был создан.Все выглядит хорошо, но когда я пытаюсь создать подпункт, он не создает подпункт для нужного элемента.
Я надеюсь, что это сделано с тех пор, может ли кто-нибудь указать мне правильное направление, пожалуйста?
Я создал список в детальном представлении
Для каждого элемента в списке я создал подсписок
Для каждого элемента в любом списке я пытаюсь создать новый элемент и имеюон добавлялся в конец списка, который был отправлен под
Моя проблема в том, что я могу получить внешний ключ элементов через настройку подробного представления.Но я не могу получить внешний ключ элемента для сопряжения с созданным под ним подэлементом.
class TopicDetailView (DetailView, View):
template_name = "topic_detail.html"
item_form = ItemForm()
subitem_form = SubitemForm()
topic = ''
topic_items = ''
subitem_item = ''
all_arguments = Argument.arguments.all()
creation_date = datetime.now().strftime("%Y-%m-%d %H:%M")
context = {
'item_form' : item_form,
'subitem_form' : subitem_form,
'topic_items' : topic_items,
'subitem_item' : subitem_item,
'all_subitems' : all_subitems,
'creation_date' : creation_date,
}
def get(self,request,pk,context=context):
context['topic'] = Topic.topics.all().get(id=pk)
context['topic_items'] = context['topic'].rule_set.all()
context['user'] = self.request.user
return render(request,self.template_name, context=context)
def post(self,request,pk,context=context):
subitem_form = SubitemForm()
item_form = ItemForm()
if request.method=='POST' and 'ItemButton' in request.POST:
item_form = ItemForm(request.POST)
if item_form.is_valid():
print(item_form.cleaned_data)
Item.items.create_item (
**item_form.cleaned_data,
Topic = context['topic'],
created_by = context['user'],
creation_date = context['creation_date']
)
TopicDetailView.get(self,request,pk,context=context)
else:
print(rule_form.errors)
TopicDetailView.get(self,request,pk,context=context)
elif request.method=='POST' and 'SubitemButton' in request.POST:
subitem_form = SubitemForm(request.POST)
if subitem_form.is_valid():
print(subitem_form.cleaned_data)
for item in context['topic_items']:
if item.id in request.POST:
context['subitem_item'] = Item.items.all().get(id=item.id)
Subitem.subitem.create_subitem (
**subitem_form.cleaned_data,
created_by = context['user'],
Item = context['subitem_item']
)
TopicDetailView.get(self,request,pk,context=context)
else:
print(item_form.errors)
TopicDetailView.get(self,request,pk,context=context)
return render(request,self.template_name, context=context)
Результаты, которые я пытаюсь достичь:
Я ввожу тему в форму, нажимаю кнопку отправки. Тема создается и добавляется в конец списка в подробном представлении с правильным внешним ключом (это работает, потому что я могу использовать pk из URL)
Я вписываю подэлемент в форму, нажимаю кнопку отправки. Подэлемент создается и добавляется в конец списка темы, под которым он был создан в том же подробном представлении (это не работает)
Результаты, которые я на самом деле получаю:
Я вписываю подэлемент в форму, нажимаю кнопку отправки
Результаты 1: подэлемент не создается, потому что форма темыоставлено пустым (не должно быть фактором, это совершенно другая форма)
Результаты 2: Подэлемент создается, но его внешний ключ предназначен для последней темы, а не для того, который был создан в
Результаты 3. Я получаю сообщение об ошибке на странице о том, что у подэлемента не было внешнего ключа с какой-либо темой