У меня есть ниже модели, и я хочу, чтобы выполнить ниже запрос:Джанго обратная OneToOne связь с select_related
Post.objects.select_related(
'previous_post', 'next_post'
).get(id=some_id)
# models.py
class Post(models.Model):
title = models.CharField(max_length=60, unique=True)
description = models.TextField()
content = models.TextField()
previous_post = models.OneToOneField('self', null=True, blank=True,
related_name='next_post',
on_delete=models.PROTECT)
По какой-то причине не работает с next_post
параметром, как я получаю следующее сообщение об ошибке:
raise IndexError("Number of args exceeds number of fields") IndexError: Number of args exceeds number of fields
Теоретически я могу жить без select_related
, но я бы предпочел не сдаваться в этом случае, и мне действительно интересно, что я делаю что-то неправильно или это просто ошибка Django.
Полный отслеживающий:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/query.py", line 381, in get
num = len(clone)
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/query.py", line 240, in __len__
self._fetch_all()
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/query.py", line 1074, in _fetch_all
self._result_cache = list(self.iterator())
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/query.py", line 72, in __iter__
rel_populator.populate(row, obj)
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/query.py", line 1715, in populate
obj = self.model_cls.from_db(self.db, self.init_list, obj_data)
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/base.py", line 460, in from_db
new = cls(*values)
File "/home/konrad/PycharmProjects/jdg/env/lib/python3.4/site-packages/django/db/models/base.py", line 372, in __init__
raise IndexError("Number of args exceeds number of fields")
IndexError: Number of args exceeds number of fields
Можете ли вы показать полную трассу? – Alasdair
'env/lib/python3.4/site-packages/django/db/models/base.py в __init__, строка 372' – klis87
Выше была последняя строка, в сообщении у вас есть доступ к полной трассе – klis87