Django Scopes — Как получить текущего арендатора?

avatar
Hofmann
8 августа 2021 в 21:25
127
0
1

Я новичок в Django и создаю многопользовательское приложение. Я не совсем уверен, как получить текущего арендатора вошедшего в систему пользователя, чтобы использовать его в качестве фильтра в представлениях. Пример: Post.objects.filter(tenant=current_tenant)

Примеры моделей:

from django.db import models

class Tenant(models.Model):
    name = models.CharField(…)

class CustomUser(AbstractUser):
    tenant = models.ForeignKey(Tenant, …)

class Post(models.Model):
    user = models.ForeignKey(CustomUser, …)
    title = models.CharField(…)

class Comment(models.Model):
    post = models.ForeignKey(Post, …)
    text = models.CharField(…)

Где и как мне написать функцию get_current_tenant?

Будем очень признательны за любую помощь.

Источник
Klaus D.
8 августа 2021 в 21:35
0

Вам нужно будет каким-то образом расширить модель пользователя. Может быть отношением один к одному к или от Tenant.

Hofmann
8 августа 2021 в 21:38
0

Спасибо за ваш ответ, я обновил вопрос с моделью пользователя. Есть ли у вас какие-либо предложения о том, как написать функцию get_current_tenant и где ее разместить?

Klaus D.
8 августа 2021 в 21:47
0

В этой модели у пользователя будет атрибут tenant. Функция не нужна.

Hofmann
8 августа 2021 в 22:03
0

Насколько я понимаю, теперь я могу получить доступ к атрибуту tenant. Я был бы признателен, если бы вы могли объяснить мне, как я могу использовать его, чтобы убедиться, что запросы Class-based views будут возвращать только экземпляры, связанные с текущим пользователем, вошедшим в систему.

Klaus D.
8 августа 2021 в 22:21
0

Прочтите ссылку которую я дал и ссылки в ней!

Ответы (0)