Как получить доступ к экземпляру из менеджера моделей? - PullRequest
0 голосов
/ 23 сентября 2018

Мне сказали, что это не имеет смысла, поскольку менеджеры работают со всеми строками, а не с одним экземпляром, но я вижу, чего я хочу достичь, в библиотеке django-taggit.

Здесь: https://github.com/alex/django-taggit/blob/master/taggit/managers.py

И установка работает следующим образом:

from django.db import models

from taggit.managers import TaggableManager

class Food(models.Model):
    # ... fields here

    tags = TaggableManager()

Затем, чтобы пометить что-либо, можно просто сделать следующее:

apple.tags.add("red", "green", "fruit")

Примечание: apple не Apple.

Тем не менее, когда я пытаюсь сделать это сам, я получаю: AttributeError: Manager isn't accessible via MyModelName instances!

Мой код:

from django.db import models


class TagManager(models.Manager):
    def add(self, *tags):
        print("Testing...")


class List(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=500)

    tags = TagManager()

Затем я пытаюсь позвонитьдобавить метод следующим образом:

l = List.objects.create(...)
l.tags.add(...)

Как я могу заставить его работать?

...