Поле OneToOne в django по умолчанию
Помогите пожалуйста. У меня есть модель:
class Book(core.BaseModel):
book_link = models.OneToOneField('self', default = "", on_delete=models.CASCADE)
book_name = models.CharField('Name', max_length=250)
Я хочу установить 'self' в поле book_link, которое будет возвращать в это поле имя_книги или объект модели книги.
Но когда я создаю новый объект Book - Django показывает мне в колонке "book_link" все названия книг, которые я могу выбрать и сохранить новый объект. Я хочу, чтобы при создании нового объекта он автоматически сохранял для этого объекта это название!
Если я правильно понял ваш вопрос, вы хотите создать что-то вроде связанного списка книг. Для этого сначала не используйте поле один к одному, если только каждая книга не связана только и исключительно с одной книгой. Чтобы связать один объект с самим собой, вы можете использовать имя модели в строковом формате.
Также обратите внимание, что способ, которым вы предоставили значение по умолчанию, был ошибочным, Лучше сделать его обнуляемым с помощью null=True
.
Моя рекомендуемая модель будет такой:
class Book(models.Model):
book_link = models.ForeignKey(to='Book', null=True, on_delete=models.CASCADE, related_name="linked_books")
book_name = models.CharField('Name', max_length=250)