Как django разрешает внешний ключ в файле models.py? - PullRequest
0 голосов
/ 09 января 2019

Мне интересно, как django решает, какой столбец или поле будет выступать в качестве внешнего ключа для другой модели в отношениях Один-ко-многим.

class Department(models.Model):
  dept_name = models.CharField(max_length=100)
  dept_head = models.CharField(max_length=100)
  dept_abbrv = models.CharField(max_length=100)


class Employee(models.Model):
  dept = models.ForeignKey(Department)
  emp_name = models.CharField(max_length=100)

Теперь, как django знает, какой столбец Отдела (dept_name, dept_head или dept_abbrv) будет отображаться как «dept» в Employee. На моей административной странице сведений о сотруднике, если мне нужно добавить нового сотрудника, есть раскрывающийся список со всеми названиями Department.dept_name и dept. Как Джанго решает это? Почему это не выпадающий список dept_head или dept_abbrv?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вам не нужно указывать поле, в котором вы создаете свои отношения. Джанго сам знает, что он должен выбрать первичный ключ (id) таблицы, связанной с вашей моделью.

Джанго отвечает за создание самого идентификатора. Вы можете увидеть идентификатор в файлах миграции вашего приложения.

Model and migration

0 голосов
/ 09 января 2019

Django создаст идентификатор в качестве первичного ключа, и при использовании внешнего ключа Django будет использовать его в качестве своего отображения, если иное не указано в коде.

...