Попытка создать подробное представление со списком в представлении с подсписком для каждого элемента. И я могу создать элемент для каждого элемента в том же представлении - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь завершить эту функцию моего проекта 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. Я получаю сообщение об ошибке на странице о том, что у подэлемента не было внешнего ключа с какой-либо темой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...