0
私は自分のモデルでカスタムマネージャーを使用しようとしていますが、それも自己関係で使用したいので、いくつかのコードをaddメソッドに追加できます。ラインt1.children.add(t2)
で自分自身の多人数一人のマネージャーにカスタム
from django.db import models
class TestModelManager(models.Manager):
use_for_related_fields = True
def __init__(self):
models.Manager.__init__(self)
def add(self, *args, **kwargs):
print('My custom code.')
super().add(*args, **kwargs)
class TestModel(models.Model):
objects = TestModelManager()
name = models.CharField(max_length=50)
parent = models.ForeignKey(
'self',
related_name='children',
null=True,
blank=True,
)
Pythonシェル出力
>>> from testmods.models import TestModel
>>> TestModel.objects
<testmods.models.TestModelManager object at 0x10bc96e80>
>>> TestModel.objects.bulk_create([TestModel(name="foo"), TestModel(name="bar")])
[<TestModel: TestModel object>, <TestModel: TestModel object>]
>>> t1, t2 = TestModel.objects.all()
>>> t1.children.add(t2)
>>> t1.children.all()
<QuerySet [<TestModel: TestModel object>]>
>>>
なぜそれが「私のカスタムコード」を印刷しませんでした。ここでは、コードですか?