簡體   English   中英

如果 django 上的其他表中已存在該 ID,如何禁用或隱藏分配/重定向按鈕

[英]How to disable or hide assign/redirect button if the ID already exist in other table on django

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

在 Views.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)

所以我想隱藏這個波紋管鏈接按鈕,如果patient.pk已經存在於Ticket模型中並且is_active = 1所以它會顯示所有帶有分配鏈接按鈕的行。

<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>

您可以使用自定義模板標簽

在你的app目錄下創建一個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 %}

查看文檔以獲取更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM