2016-09-28 2 views
0

У меня есть OneToOneField поле в моей модели:Django: почему обратная сторона OneToOneField возвращает кортеж?

class Portfolio(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True, on_delete=models.CASCADE) 

в других местах в целях, я пытаюсь получить Portfolio от User

portfolio = request.user.portfolio

Мой отладчик показывает результат, как это: <class 'tuple'>: (<Portfolio: 9999999>,)

Почему это делается? Не следует ли от 1 до 1 вернуть один объект?

+1

Он возвращает экземпляр одной модели для меня. Используете ли вы пользовательский диспетчер моделей? – Selcuk

+0

Убедитесь, что у вас нет задней запятой после 'portfolio = request.user.portfolio'. Это превратило бы его в кортеж. – knbk

+0

Вы должны показать, как вы это используете; вы, вероятно, где-то положили запятую. –

ответ

1

Я только что испытал ту же ошибку. Как предположил Дэниел, это была задняя запятая за полем моей модели:

class Book(models.Model): 
    name = models.CharField(max_length=128, verbose_name='Name') 
    author = models.OneToOneField('Author'), # <----- this comma was the cause of all evil 
Смежные вопросы