Вы НЕ хотите хранить имя пользователя в вашей модели `Fertidb̀. Ну, если быть более точным, вы ОПРЕДЕЛЕННО НЕ ХОТИТЕ хранить имя пользователя вместо идентификатора пользователя, и вероятность того, что вы действительно хотите сохранить имя пользователя в дополнение идентификатора пользователядовольно низки.
Explication: User.username
является редактируемым полем, поэтому он не является жизнеспособным первичным ключом. Если вы попытаетесь использовать его как ForeignKey, ваши данные будут повреждены, как только пользователь отредактирует свое имя пользователя. OTHO, User.id
- это правильный стабильный первичный ключ, так что это то, что вы хотите в качестве внешнего ключа. С этого момента вы можете довольно легко получить имя пользователя (с помощью self.user.username
), И вы всегда получите актуальное значение.
Единственная причина, по которой вы хотите дублировать имя пользователя в вашей моделибудет содержать значение имени пользователя в момент создания записи fertidb . Этот вид денормализации имеет смысл в некоторых контекстах - например, в приложении для электронной коммерции сохранять цену продукта в тот момент, когда его заказывает пользователь (поэтому детали и общая сумма заказа не изменяются при последующем изменении цены вашего продукта ...), но я не вижу, как у вас возникнет такая необходимость в имени пользователя (не то, что здесь нет действительного варианта использования - просто я не могу придумать xD).
IOW: оставьте свой Foreignky на User.id- то есть RightThing (tm) - и , если у вас есть веская причина / требование для дублирования имени пользователя , сделайте это в отдельном поле.
Кроме того, учитывая ваш вопрос,Я любезно предлагаю прекратить написание кода на несколько дней, узнать о правильном моделировании реляционных баз данных и о том, как это транслируется в Django ORM. Что ж, для правильного моделирования реляционных баз данных требуется больше нескольких дней, но, по крайней мере, вы должны понять основы правильно.