Найти - Пользователи
Полная версия: Иерархия пользователей
Начало » Django » Иерархия пользователей
1
hound
Добрый день, есть модель пользователя, кроме логина, имени и пароля в этой модели есть поле “владельца”.
    name = models.CharField(max_length = 100)
    owner = models.ForeignKey('self')

Есть вторая модель, которая привязана к модели пользователя:
class Data(models.Model):
    owner = models.ForeignKey(MyUser)
    title = models.CharField()

Соответственно, есть главная учетная запись администратора, у которой в поле owner ссылается на себя. И дальше идут другие пользователи и к каждому пользователю привязано произвольное кол-во экземпляров модели Data.

Какой существует оптимальный способ вывезти все доступные экземпляры модели Data для определенного пользователя?
У одного пользователя может быть “в подчинении” несколько пользователей, у которых так же могут быть свои пользователи.
inoks
Уровней может быть произвольное количество?

Что то подобное нужно использовать в рекурсии:
for slave in owner.myuser_set.all:
    for data_item in slave.data_set.all:
        print data_item
hound
inoks
уровней произвольное кол-во.
И общая структура получается древовидной.
inoks
как то так (не проверял).

data_set = []
def collect_data(owner):
	for user in owner.myuser_set.all():
		collect_data(user)
	for item in owner.data_set.all():
		if item not in data_set:
			data_set.append(item)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB