Python 如果该ID已经存在于django上的其他表中,如何禁用或隐藏assign/redirect按钮
另一个是:Python 如果该ID已经存在于django上的其他表中,如何禁用或隐藏assign/redirect按钮,python,html,django,Python,Html,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') d
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
@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)
在视图中。py
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
票证的另一个视图:
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
@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)
因此,如果Ticket model中已经存在patient.pk并且_active=1,那么我想隐藏下面的链接按钮,以便它显示带有assign link按钮的所有行
@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)
您可以使用自定义的模板标记 在应用程序目录下创建一个
templatetags
包;因此,您的应用程序目录中应该包含以下内容:
<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>
接下来,将以下代码添加到/templatetags/check_patient
:
templatetags
templatetags/__init__.py
templatetags/check_patient.py
来自django导入模板的
从。模型进口票
register=template.Library()
@register.simple_标记
def检查患者已存在(请求,主键):
return Ticket.objects.filter(patient_pk=pk,is_active=1).exists()
在模板中:
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()
{%loadcheck\u patient%}
{%if not check_patient_已经存在_patient.pk%}
{%endif%}
在if表达式末尾放置所有内容:未使用的“patient.pk”后,请查看以获取更多信息。模板渲染期间出错您是否设法解决了此问题?您的
if
语句应该有问题。是的,我做了,但在这里我使用嵌套for循环和if语句:{%if-not queryset%}{%for patient in patients%}{%if-not check\u patient\u已经存在patient.pk%}{%endif%}{%endfor%}{%endif%}{%endif%}{%endif%}