Django - как получить таблицу, которая подключена к пользователю? - PullRequest
1 голос
/ 08 марта 2020

У меня есть встроенная таблица из Django, «Пользователи». Каждый пользователь хранится там.

Теперь я создал еще одну таблицу под названием «Вопросы» - Вопросы содержат личные вопросы (поля), на которые должен ответить каждый пользователь.

Они подключено OneToOne:

class Question(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)

Пока все работает. Я могу создать объект Вопрос, а затем назначить его пользователю. Но:

Как я могу запросить поля Вопроса, которые назначены пользователю? В конце я хочу получить большую HTML форму, содержащую все эти вопросы, на которые пользователь может ответить.

Я попробовал следующее:

questions = request.user.question.objects.get(user=user)
    context = {'questions':questions}

Это не работает и приводит к AttributeError: Manager isn't accessible via Question instances.

Я застрял здесь и не знаю, как это сделать. Если кто-нибудь может мне помочь, спасибо.

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Лучшим способом было бы иметь связанное имя в вашем поле.

class Question(models.Model):
    user = models.OneToOneField(
        User,
        related_name='question',
        on_delete=models.CASCADE,
        primary_key=True
    )

При этом вам не нужно фильтровать, чтобы получить вопрос пользователя, вы можете сделать это просто user.question

1 голос
/ 08 марта 2020

Как я могу запросить поля Вопроса, которые назначены пользователю?

questions = Question.objects.filter(user=request.user)

В конце я хочу получить большую HTML форму, которая содержит все эти вопросы, на которые пользователь может ответить.

Ваш шаблон может выглядеть следующим образом

{% for question in questions %} 
    {{ question.field_to_display_1 }}
    {{ question.field_to_display_2 }}
    ...
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...