Как сделать поле 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
Это опустошит ваш выбор для поля. Все еще есть сомнения прокомментировать это.