如何让Django模板识别模型方法?
在my django模板如何让Django模板识别模型方法?,django,django-models,django-templates,Django,Django Models,Django Templates,在my django模板中,此用户已取消订阅{{sub.is_unsubscribed}始终显示“此用户未订阅错误”,即使根据以下模型它应显示为真。py from django.shortcuts import get_object_or_404 class Subscriber(models.Model): email = models.CharField(max_length=12) first_name = models.CharField(max_length=50)
中,此用户已取消订阅{{sub.is_unsubscribed}
始终显示“此用户未订阅错误”,即使根据以下模型它应显示为真。py
from django.shortcuts import get_object_or_404
class Subscriber(models.Model):
email = models.CharField(max_length=12)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
create_date = models.DateTimeField(auto_now_add=True)
def is_unsubscribed(self):
try:
get_object_or_404(MasterUnsubscriber, unsubcriber_email=self.email)
return True
except:
return False
def __str__(self):
return self.email
class MasterUnsubscriber(models.Model):
unsubscriber_email= models.CharField(max_length=12)
由于我的应用程序的结构原因,我不想将取消订阅移动到
订阅者
模型作为布尔值。如何在保持相同模型格式的情况下解决此问题。get\u object\u或\u 404
如果根本没有元素,或者存在多个这样的元素,则会引发错误,因为底层实现将使用.get(…)
。您可以使用.exists()
:
class Subscriber(models.Model):
# …
def is_unsubscribed(self):
return MasterUnsubscriber.objects.filter(unsubscriber_email=self.mail).exists()
类订户(models.Model):
# …
def已取消订阅(自行):
return MasterUnsubscriber.objects.filter(unsubscriber\u email=self.mail).exists()
尽管如此,我还是建议用户使用a,而不是通过匹配电子邮件地址。这将是低效的,因为在非索引列上的搜索速度很慢,而且如果用户以后更改了他们的电子邮件,那么突然之间,这些邮件可以再次订阅。Django还提供了在相关对象上进行过滤或聚合的方便方法,因此您可以从Django ORM中获得更多信息