Django 模板语言:为整个模型创建条件(不是逐条记录)

Django Template Language: Create conditional for entire Model (not record by record)

新手问题。根据模板中的以下脚本...

{% if request.user not in Result %}
     <p>You have no account in the system.</p>
{% endif %}

...声明“您在系统中没有帐户。”在屏幕上出现 100 次---因为有 100 条记录,因此条件被检查 100 次。

有没有办法修改脚本使语句只出现一次?意思是,它会检查整个数据库一次,以寻找 request.user 出现在模型中任何地方的证据(而不是它是否出现在数据库中的 100 条记录中的每条记录中)?

也许在 views.py 和模板中有 easier/better 方法可以做到这一点,但这超出了我的知识范围。谢谢你。下面是名为 Result 的模型。

models.py

 class Result(models.Model):
     custom_user = models.ForeignKey(CustomUser, default=None, 
                   null=True, on_delete=models.SET_NULL)
     decision = models.ForeignKey(Decision, default=None, 
                null=True, on_delete=models.SET_NULL,
                             verbose_name="Decision")
     vote_eligible = models.BooleanField(default=True)
     vote = models.CharField(default="", max_length=100, 
                             blank=True, verbose_name="Your 
                             Vote:")
     voted_already = models.BooleanField(default=False)

     @staticmethod
     def get_absolute_url():
         return "/home"

     def __str__(self):
         return f"{self.custom_user}"

views.py

class VoteForm(LoginRequiredMixin, CreateView):
    model = Result
    form_class = VotingForm
    template_name = 'users/vote_form.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context["Result"] = Result.objects.all()
        return context

forms.py

class VotingForm(forms.ModelForm):
    class Meta:
        model = Result
        fields = ['decision', 'vote']

views.py

因为需求是显示登录用户是否有'Result'模型的账号。我已经过滤了特定于用户的行。您可以循环遍历模板中的 user_specific。如果用户出现在 'Result' 中,模型 'user_specifc' 将具有元素。如果用户不在 'Result' table 中,'user_specific' 将为空。在您的模板中,您可以检查 'user_specific' 是否为空列表。

class VoteForm(LoginRequiredMixin, CreateView):
    model = Result
    form_class = VotingForm
    template_name = 'users/vote_form.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context["Result"] = Result.objects.all()
        context['user_specific'] = Result.objects.filter(custom_user=self.request.user)
        return context

template.html

{% if not user_specific %}
     <p>You have no account in the system.</p>
{% endif %}