Как сделать поле ManyToMany модели django пустым изначально?

У меня есть две родственные модели следующим образом.

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author)
    isbn =models.CharField(max_length=15)


class Lending(models.Model):
    member_id = models.ForeignKey(Member)
    name = models.CharField(max_length=100)
    borrowed = models.DateField(auto_now_add=True)
    returning = models.DateField()
    book_list = models.ManyToManyField(Book, related_name='borrowed_books')

Я хочу сделать поле списка книг пустым в HTML-форме создания кредитования при отображении для пользователя. Я хочу убедиться, что он не пустой в форме модели бэкэнда и не равен нулю в модели. Я делаю это, потому что список книг может быть огромным и будет использовать ajax для запроса книги, чтобы динамически добавлять их в список книг в поле формы HTML при отправке данных. Как я могу это сделать?

1 ответ

Решение

Если вы используете представления на основе классов django, вы можете переопределить get_form метод для редактирования формы и установки некоторых начальных значений. Я могу привести вам пример -

class LendingView(generic.CreateView):
    ...
    def get_form(self,form_class=None):
        form = super().get_form(form_class)
        form['book_list'].field.choices = {}
        return form

Это опустошит ваш выбор для поля. Все еще есть сомнения прокомментировать это.

Другие вопросы по тегам