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() }}
答案 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过滤条目是否为成员,并在模板中放置模板标签过滤器以进行检查。