Мне сказали, что это не имеет смысла, поскольку менеджеры работают со всеми строками, а не с одним экземпляром, но я вижу, чего я хочу достичь, в библиотеке 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(...)
Как я могу заставить его работать?