如果该ID已经存在于djang上的其他表中,如何禁用或隐藏分配/重定向按钮

2024-05-05 05:53:36 发布

您现在位置:Python中文网/ 问答频道 /正文

class Patient(models.Model):
    name = models.CharField(max_length=50)
    active_choices = [('Yes', 'Yes'),
                      ('No', 'No')]
    active = models.CharField(
        max_length=6, choices=active_choices, default='Yes')

    def __str__(self):
        return self.name

另一个是:

class Ticket(models.Model):
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)   
    is_active = models.IntegerField(default=1)

    def __str__(self):
        return self.patient.name

在视图中。py

@login_required
def PatientView(request):
    form = PatientModelForm(request.POST or None)
    patients = Patient.objects.order_by('-id')
    ticket_list = Ticket.objects.filter(is_active=0)
    total = patient_list.count()       
    if form.is_valid():
        obj.save()
        messages.success(request, 'Patient was added successfully.')
        return redirect('/dashboard/patient')
    context = {
        'form': form,
        'patients ': patients ,    
    }
    return render(request, 'dashboard/patient.html', context)

票证的另一个视图:

@login_required
def TicketToGenerateView(request, pk):
    ticket = get_object_or_404(Patient, pk=pk)

    form = TicketModelForm(request.POST or None)
    if form.is_valid():    
        obj.save()
        messages.success(request, 'Patient assigned successfully.')
        return redirect('/dashboard/ticket')

    context = {
        'form': form,
        'ticket': ticket,
    }
    return render(request, 'dashboard/ticket.html', context)

因此,如果Ticket model中已经存在patient.pk并且_active=1,那么我想隐藏下面的链接按钮,以便它显示带有assign link按钮的所有行

<a href="{% url 'dashboard:ticket_to' patient.pk %}" name="doctor" class="btn btn-dark btn-sm" data-toggle="tooltip" title="Assign to a Doctor"> <span class=" fa fa-user-md "></span> </a>

Tags: nameselfformreturnismodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-05-05 05:53:36

您可以使用自定义的模板标记

在你的应用程序目录下创建一个templatetags;因此,您的应用程序目录中应该包含以下内容:

templatetags
templatetags/__init__.py
templatetags/check_patient.py

接下来,将以下代码添加到<your_app_dir>/templatetags/check_patient

from django import template
from <your_app>.models import Ticket

register = template.Library()


@register.simple_tag
def check_patient_already_exists(request, pk):
    return Ticket.objects.filter(patient_pk=pk, is_active=1).exists()

在模板中:

{% load check_patient %}

{% if not check_patient_already_exists patient.pk %}

    <a href="{% url 'dashboard:ticket_to' patient.pk %}" name="doctor" class="btn btn-dark btn-sm" data-toggle="tooltip" title="Assign to a Doctor"> <span class=" fa fa-user-md "></span> </a>

{% endif %}

有关详细信息,请查看docs

相关问题 更多 >