【发布时间】:2018-01-14 19:29:58
【问题描述】:
我使用 Django 的 .only() 构造只查询我需要的列。
例如
Trainer.objects.filter(id__in=ids).only('id', 'lives')
这是我写的一个简单的例子来重现这个:
class BaseTrainer(models.Model):
mode = models.IntegerField(help_text="An integer")
def __init__(self, *args, **kwargs):
super(BaseTrainer, self).__init__(*args, **kwargs)
self._prev_mode = self.mode
class Trainer(BaseTrainer):
name = models.CharField(max_length=100, help_text="Name of the pokemon")
trainer_id = models.CharField(max_length=10, help_text="trainer id")
badges = models.IntegerField(help_text="Power of the pokemon (HP)")
lives = models.PositiveIntegerField(default=sys.maxsize)
unique_together = ("name", "trainer_id")
def __init__(self, *args, **kwargs):
super(Trainer, self).__init__(*args, **kwargs)
self._temp = self.lives
@classmethod
def test(cls):
t = Trainer.objects.only('trainer_id').all()
print(t)
我只需要 id 和 name 字段,这是肯定的。
maximum recursion depth exceeded 的原因是什么?
【问题讨论】:
-
@AshwiniChaudhary 错字。
-
我无法在 Django 1.11.3 上重现它。你能提供一个Minimal, Complete, and Verifiable example吗?
-
@AshwiniChaudhary 你去。有一个小姐。谢谢指点。
标签: python django recursion django-models django-orm