Django模板request.user存在于模型中

时间:2014-05-04 07:26:06

标签: django

models.py

class Universe(models.Model):
    name = models.CharField(max_length=50, unique=True)
    Members_list = models.ManyToManyField('Profile', through='Members', blank=True)
    ...

class Profile(models.Model):
    user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
    ...


class Members(models.Model):
    uni = models.ForeignKey(Universe)
    profile = models.ForeignKey(Profile)
    ...

views.py

class UniverseDetailView(DetailView):
    model = Universe
    template_name = 'multiuniverse/universe_detail.html'

我如何检查请求用户是否是此Universe的成员?

这样的东西
{{ if  Members.filter(uni==universe, profile.user==request.user).exists()  }}

2 个答案:

答案 0 :(得分:0)

在views.py中:

class UniverseDetailView(DetailView):
    model = Universe
    template_name = 'multiuniverse/universe_detail.html'

    def get_context_data(self, **kwargs):
        context = super(UniverseDetailView, self).get_context_data(**kwargs)
        context["member_exists"] = Members.objects.filter(uni==self.object(), profile.user=self.request.user).exists()
        return context

在你的模板中:

{% if member_exists %}
     ...
{% endif %}

答案 1 :(得分:0)

您可以使用django tamplatetags。在Templatetags中创建一个函数,该函数将使用objects.filter过滤条目是否为成员,并在模板中放置模板标签过滤器以进行检查。