Как проверить пользователя по 2 полям из другой модели с полями ManyToMany
Как мне проверить request.user на 2 поля одновременно
?Я хочу показывать разные страницы в заголовке, если пользователь является заказчиком или подрядчиком по другому полю many to many или если он является подрядчиком и заказчиком в одно и то же время показывать обе страницы
Я не уверен, как я должен это сделать
Models.py:
class CounterParty(models.Model):
GUID = models.UUIDField(default=uuid.uuid4, editable=True, unique=True)
name = models.CharField(max_length=150, verbose_name='Name')
customer = models.BooleanField(default=False, verbose_name='customer')
contractor = models.BooleanField(default=False, verbose_name='contractor')
counter_user = models.ManyToManyField(User, blank=True, related_name='counter_user')
views.py:
@login_required
def home_view(request):
counter_party = CounterParty.objects.all()
context = {
'counter_party': counter_party
}
return render(request, 'common/home.html', context)
header.html:
{% for counter in counter_party %}
{% if request.user in counter.counter_user.all %}
<li class="nav-item"><a class="nav-link" href="{% url 'contractor_view' %}"><span
class="nav-link-title">Contractor</span></a></li>
{% endif %}
{% endfor %}
{% if request.user.is_staff %}
<li class="nav-item"><a class="nav-link" href="{% url 'admin:index' %}"><span
class="nav-link-title">Admin</span></a></li>
{% endif %}
Вам нужно проверить, связан ли пользователь с объектом CounterParty
, у которого оба поля установлены в True
(В ваших представлениях):
@login_required
def home_view(request):
counter_party = CounterParty.objects.filter(counter_user=request.user)
customer = False
contractor = False
for cp in counter_party:
if cp.customer:
customer = True
if cp.contractor:
contractor = True
context = {
'customer': customer,
'contractor': contractor,
}
return render(request, 'common/home.html', context)