Поле 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)
Вернуться на верх