приложение для опроса в django, пытаясь понять логику - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь понять логику связывания внешних ключей с первичными ключами, пока что все кажется довольно простым, за исключением этой части, которая меня отбрасывает, если кто-то может объяснить, что я действительно буду признателен за это

Итак, в этой первой части я бы связал строку с первичным ключом 1 с переменной q

>>> q = Question.objects.get(pk=1)


>>> q.choice_set.all()
<QuerySet []>

В основном создание вариантов и связывание их с q (который состоит из вопроса, связанного с первичным ключом 1)

# Create three choices.
>>> q.choice_set.create(choice_text='Not much', votes=0)
<Choice: Not much>
>>> q.choice_set.create(choice_text='The sky', votes=0)
<Choice: The sky>

Это та часть, которая меня отбрасывает!Почему я вдруг на последнем выборе установил переменную c?

>>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)

# Choice objects have API access to their related Question objects.

Я вижу, что вопрос задается внутри переменной c, но какой был смысл, есть ли конкретныйпричина, по которой последний выбор должен был быть установлен в новую переменную c ??

Это условно?и я пытаюсь спросить: каждый раз, когда я создаю некоторый тип отношения внешнего ключа, моя дочерняя сущность (в этом случае выбор) связана с новой переменной в конце (с в этом случае), и что такоеЗначение этого?

>>> c.question
<Question: What's up?>

# And vice versa: Question objects get access to Choice objects.
>>> q.choice_set.all()
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>
>>> q.choice_set.count()

Я пытался просмотреть документацию по рассуждению и не могу ничего найти

1 Ответ

0 голосов
/ 19 октября 2018

Когда вы создаете объект, вам не нужно присваивать ему переменную.Это просто удобно, если вы собираетесь использовать созданный объект.

object = Model.objects.create(parameters)

И

Model.objects.create(parameters)
object = Model.objects.get(parameters)

То же самое.ForeignKey - это просто еще один параметр (или field), сохраняемый при создании объекта.

Поле ForeignKey хранит ссылку на объект в другом Model.Когда они вызывают c.question, он возвращает объект question, указанный в поле choice ForeignKey.Метод __str__ объекта Question - это текст, который вы видите.

...