AttributeError: у объекта 'User' нет атрибута 'get_descendant_count' |Джанго-mptt - PullRequest
0 голосов
/ 28 мая 2018

Может кто-нибудь помочь мне решить следующую проблему.Я использую приложение django-mptt в своем проекте Django.Я хочу сделать дерево связанных пользователей.Для этой задачи я решил создать Profile модель со следующим кодом.

from mptt.models import MPTTModel, TreeForeignKey

class Profile(MPTTModel):
    user = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
    )
    referral = models.OneToOneField(
        Referral,
        null=True,
        on_delete=models.CASCADE,
    )
    parent = TreeForeignKey(
        User,
        on_delete=models.CASCADE,
        null=True, blank=True,
        related_name='children'
    )

class MPTTMeta:
    order_insertion_by = ['user']

Проблема : В views.py я хочу изменить значение родительского поля объекта Profile, но у него следующая ошибка.

ОШИБКА:

  File "C:\Users\PycharmProjects\Project\project_venv\lib\site-packages\mptt\models.py", line 209, in get_ordered_insertion_target
    if parent is None or parent.get_descendant_count() > 0:
AttributeError: 'User' object has no attribute 'get_descendant_count'

views.py:

print(self.created_user) # return correct value

profile = Profile.objects.get(id=5)
profile.parent = self.created_user
profile.save()

1 Ответ

0 голосов
/ 28 мая 2018

Вы не можете определить parent как указывающий на другой класс.Это не имеет смысла;смысл дерева в том, что у вас есть иерархический набор элементов одного типа.

Ваш parent TreeForeignKey должен указывать на "self", и вам необходимо передать ему экземпляр Profileне User.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...