Как использовать данные (просмотр и URL) предыдущей страницы на следующей странице? - PullRequest
0 голосов
/ 26 января 2020

Задать этот вопрос довольно сложно, поэтому я попытаюсь проиллюстрировать его на нескольких рисунках.

Я создал следующий интерфейс, чтобы пользователь мог нажать кнопку add и создать новых дочерних элементов javascript (его родитель).

enter image description here

нажатие add показывает следующий интерфейс:

enter image description here

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

Это моя идея, но я не знаю, как это сделать. У нас уже есть родительское имя в предыдущем url:

enter image description here

до нажатия кнопки add, если есть способ, которым я могу отправить часть этого URL, а именно JavaScript в нашей форме, чтобы форма могла использовать его как-то так:

class CatLevelThreeCreateView(CreateView):
    model = CatLevelThree
    template_name = 'cat-level-three-create.html'
    success_url = '/'
    fields = ['title', 'summary', 'image']

    def form_valid(self, form):
        form.instance.levelThreeParent = self.kwargs.get('-------')  # something instead of dashes!
        return super().form_valid(form)

, только если я могу получить родителя (в нашем примере JavaSript) откуда-то проблема решена! и выше код будет делать свою работу!

Это моя плохая идея, но если вы знаете лучший способ! Если вы знаете лучшее решение, то было бы очень полезно

здесь urls.py, это немного некрасиво, простите:

urlpatterns = [
    path('Level5/new/', CatLevelFiveCreateView.as_view(), name='levelFiveCreate'),
    path('Level4/new/', CatLevelFourCreateView.as_view(), name='levelFourCreate'),
    path('Level3/new/', CatLevelThreeCreateView.as_view(), name='levelThreeCreate'),
    path('Level2/new/', CatLevelTwoCreateView.as_view(), name='levelTwoCreate'),
    path('Level1/new/', CatLevelOneCreateView.as_view(), name='levelOneCreate'),
    path('<slug:Catlevel1Slug>/<slug:Catlevel2Slug>/<slug:Catlevel3Slug>/<slug:Catlevel4Slug>/',
         CatLevelFiveListView.as_view(), name='levelFiveList'),
    path('<slug:Catlevel1Slug>/<slug:Catlevel2Slug>/<slug:Catlevel3Slug>/',
         CatLevelFourListView.as_view(), name='levelFourList'),
    path('<slug:Catlevel1Slug>/<slug:Catlevel2Slug>/',
         CatLevelThreeListView.as_view(), name='levelThreeList'),
    path('<slug:Catlevel1Slug>/',
         CatLevelTwoListView.as_view(), name='levelTwoList'),
    path('', CatLevelOneListView.as_view(), name='levelOneList'),
]

и views.py:

class CatLevelOneListView(ListView):
    model = CatLevelOne
    template_name = 'cat-level-one.html'
    context_object_name = 'categorieslvl1'


class CatLevelOneCreateView(CreateView):
    model = CatLevelOne
    fields = ['title', 'summary', 'image']
    template_name = 'cat-level-one-create.html'
    success_url = 'ParentChild:levelOneList'


class CatLevelTwoListView(ListView):
    model = CatLevelTwo
    template_name = 'cat-level-two.html'
    context_object_name = 'categorieslvl2'

    def get_queryset(self):
        qs = super().get_queryset()
        return qs.filter(levelTwoParent__slug=self.kwargs.get('Catlevel1Slug'))
        # return qs.objects.filter(levelTwoParent__slug=self.kwargs.get('Catlevel2Slug'))


class CatLevelTwoCreateView(CreateView):
    model = CatLevelTwo
    template_name = 'cat-level-two-create.html'
    success_url = 'ParentChild:levelOneList'
    fields = ['title', 'summary', 'image', 'levelTwoParent']


class CatLevelThreeListView(ListView):
    model = CatLevelThree
    template_name = 'cat-level-three.html'
    context_object_name = 'categorieslvl3'

    def get_queryset(self):
        qs = super().get_queryset()
        return qs.filter(levelThreeParent__slug=self.kwargs.get('Catlevel2Slug'))


class CatLevelThreeCreateView(CreateView):
    model = CatLevelThree
    template_name = 'cat-level-three-create.html'
    success_url = '/'
    fields = ['title', 'summary', 'image', 'levelThreeParent']

"""     def form_valid(self, form):
        form.instance.levelThreeParent = self.kwargs.get('Catlevel2Slug')
        return super().form_valid(form) """

class CatLevelFourListView(ListView):
    model = CatLevelFour
    template_name = 'cat-level-four.html'
    context_object_name = 'categorieslvl4'

    def get_queryset(self):
        qs = super().get_queryset()
        return qs.filter(levelFourParent__slug=self.kwargs.get('Catlevel3Slug'))


class CatLevelFourCreateView(CreateView):
    model = CatLevelFour
    template_name = 'cat-level-four-create.html'
    success_url = '/'
    fields = ['title', 'summary', 'image', 'levelFourParent']


class CatLevelFiveListView(ListView):
    model = CatLevelFive
    template_name = 'cat-level-five.html'
    context_object_name = 'categorieslvl5'

    def get_queryset(self):
        qs = super().get_queryset()
        return qs.filter(levelFiveParent__slug=self.kwargs.get('Catlevel4Slug'))


class CatLevelFiveCreateView(CreateView):
    model = CatLevelFive
    template_name = 'cat-level-five-create.html'
    success_url = '/'
    fields = ['title', 'summary', 'image', 'levelFiveParent']

Спасибо за чтение и помощь.

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