如何检查请求用户是否在模型中 class

How to check if request user is in a models class

假设您有一个名为 Car_club 的 class 在 class 中是 members,这是用户的 manytomany 字段。

那么您希望将页面的某些部分限制为仅供会员使用。

class Car_club(models.Model):
    members = models.ManyToManyField(User, on_delete=CASCADE

假设 html 中有些部分只有 class 的成员才能看到,如何管理?

已更新

views.py

def car_clubs(request):
    car_clubs = Car_clubs.objects.all()
    team_members = user.Car_club_set.all()
    context = {
        'car_clubs': car_clubs,
        'team_members': team_members,
    }
    return render(request, 'cars.html', context)
    

首先是什么user.Car_club?我可以从 get_user_model 获取用户,但后来我得到;

Type object 'User' has no attribute 'Car_club_set'?

team_members 不需要通过 context

发送
def car_clubs(request):
    car_clubs = Car_clubs.objects.all()
    context = {
        'car_clubs': car_clubs,
    }
    return render(request, 'cars.html', context)

在您的模板中 (cars.html):

{% for car_club in car_clubs %}
   {% if request.user in car_club.members.all %}
       <p>{{car_club}}</p>
       {% for member in car_club.members.all %}
           <p>{{member}}</p>
       {% endfor %}
   {% endif %}
{% endfor %}

并且您会获得 club_car 的成员列表,前提是该用户是该俱乐部的成员。

或者如果想在视图中设置限制:

def car_clubs(request):
    car_clubs = Car_clubs.objects.filter(members__id=request.user.id)
    context = {
        'car_clubs': car_clubs,
    }
    return render(request, 'cars.html', context)

这将 return 只有用户所在的 car_clubs。