создание нового объекта из таблицы, с которой как раз эта связь (из-за ForeignKey)? Я думаю, что да, и я думаю, что я могу это делать так:
author = models.ForeignKey(Author, default=Author.objects.create, on_delete=models.CASCADE)
Я все верно думаю?
ээээ, очень странно
А странный сам кейс или само решение? (Переменная author выдумана для описания примера.)
у тебя на каздый чих если не передаешь автора будет создваться пустая запись
Как я помню, ты можешь сослаться на функцию в default
но там проще сделать blank=True, null=True
Так, давайте я попробую дать получше названия. чтобы не использовать слова типа "предок", "автор", да и вашим взглядом оценить здравость всего случая. Кейс: Есть модель Phone, есть Token. У каждого Phone должен быть token = ForeignKey(Token). У модели Token есть default-значения в своих полях --- функции, генерирующие секретные строчки и т.д. Мне хочется, чтобы я мог создавать Phone и не создавать вручную Token, который потом все равно сразу же привязал бы отдельной строчкой. Потому я и хочу default передавать создание нового Token.
создай функцию для генерации выше модели и не парься, как сказано было уже
У меня есть подозрение, что отдельная функция будет дубляжем Token.objects.create, поэтому как будто не очень хочется ее создавать.
Я говорил про get or create, получить или создать
Да, я выше видел, не успел ответить. У меня, вроде, нет смысла делать get_or_create, потому что get никогда не будет, всегда должен быть create. Но спасибо.
люди любят перестраховаться:) но ты мог бы просто расширить модель юзера и сохранить секрет в одном из его полей
Так, мы под юзером подразумеваем то, что я раньше описал phone? Вообще-то как будто кажется, будто это все обычный OneToOne, как будто можно было бы Token внедрить в Phone и не мучаться. Но у меня есть задумка, когда Token-ы будут создаваться не только в Phone. Уф, ладно, я теперь плыву в названиях да и другая срочная задача появилась. Но я пока описывал сюда в чатик, понял, что create в default передавать не так плохо. Спасибо всем :-)
Обсуждают сегодня