Изменение данных модели django на основе ссылки, выбранной в предыдущем представлении

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

У меня есть страница 'tools.html', которая является шаблономView:

urls.py

    path(
        "tools/",
        TemplateView.as_view(template_name="pages/tools.html"),
        name="tools",
    )

tools.html имеет две ссылки (AP и AD) - обе должны вести на один и тот же шаблон 'se_balance.html' страницу, где пользователи заполняют форму.

Представление для se_balance.html следующее:

class CaseView(TemplateView):
    model = Case
    template_name = "../templates/se_balance.html"
    
    def get(self, *args, **kwargs):
        print('getting')
        case_form = CaseForm
        sideeffect_formset = SideeffectFormSet(queryset=SideEffect.objects.none())

        return self.render_to_response(
            { "case_form": case_form,
              "sideeffect_formset": sideeffect_formset,
              "sideeffect_formsethelper": SideEffectFormSetSetHelper,
            }
        )

Модель 'Case' выглядит следующим образом:

class Case(TimeStampedModel):
    # get a unique id for each patient - could perhaps use this as slug if needed
    case_id = models.UUIDField(
        primary_key=True, unique=True, default=uuid.uuid4, editable=False
    )
    # Remove blank=True if we want to make login compulsory
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.SET_NULL
    )

    P_CHOICES = [(‘AD’, ‘AD’), 
                 (‘AP’, ‘AP’),]

В зависимости от ссылки, которая была нажата в tools.html, я бы хотел, чтобы модель инстанцировалась по-разному (т.е. с P_CHOICEs как 'AD' или 'AP', но я не уверен в правильном способе сделать это?

Спасибо!

В обе ссылки в tools.html можно добавить параметр запроса, например p, который затем можно получить в CaseView. Например:

<a href="/link-to/se-balance?p=AP">AP</a>
<a href="/link-to/se-balance?p=AD"> AD </a>

Вы можете расширить это, отправив P_CHOICES в контекст шаблона tools.html, что будет выглядеть примерно так:

{% for choice_value, choice_label in P_CHOICES %}
    <a href="/link-to/se-balance?p={{ choice_value }}">{{ choice_label }}</a>
{% endfor %}

Вернуться на верх