Простой вопрос о форме / модели Django

Я хочу, чтобы BooleanField inuse был True, когда я сохраняю ModelForm (я использую форму вне области администрирования), и я не уверен, как это сделать.

Модели:

 class Location(models.Model): place = models.CharField(max_length=100) inuse = models.BooleanField() class Booking(models.Model): name = models.CharField(max_length=100, verbose_name="Your name*:") place = models.ManyToManyField(Location, blank=True, null=True) 

Формы:

 class BookingForm(ModelForm): class Meta: model = Booking def save(self, commit=True): booking = super(BookingForm, self).save(commit=False) if commit: booking.save() self.save_m2m() for location in booking.place.all(): location.inuse = True print location #nothing prints location.save() 

Посмотреть:

 def booking(request): form = BookingForm() if request.method == 'POST': form = BookingForm(request.POST) if form.is_valid(): form.save() else: form = form return render_to_response('bookingform.html', { 'form': form, }) 

Обновлено до последнего (см . Ответ Маноя Говиндана ). Он по-прежнему не обновляет inuse для True при отправке / сохранении.

2 Solutions collect form web for “Простой вопрос о форме / модели Django”

 class BookingForm(ModelForm): class Meta: model = Booking def save(self, commit=True): booking = super(BookingForm, self).save(commit=False) booking.inuse = True if commit: booking.save() 

Вот мой удар по нему:

 class BookingForm(ModelForm): class Meta: model = Booking def save(self, commit=True): booking = super(BookingForm, self).save(commit=False) if commit: booking.save() self.save_m2m() for location in booking.place.all(): location.inuse = True location.save() 

Обновить

Весь код, который я использовал:

 # models.py class Location(models.Model): place = models.CharField(max_length=100) inuse = models.BooleanField() class Booking(models.Model): name = models.CharField(max_length=100, verbose_name="Your name*:") place = models.ManyToManyField(Location, blank=True, null=True) # forms.py class BookingForm(ModelForm): class Meta: model = Booking def save(self, commit=True): booking = super(BookingForm, self).save(commit=False) if commit: booking.save() self.save_m2m() for location in booking.place.all(): location.inuse = True location.save() In [1]: from test_app.forms import BookingForm In [2]: from test_app.models import Location # I had already saved some `Location` instances. In [3]: data = dict(name = 'MyCity', place = [p.id for p in Location.objects.all()]) In [4]: f = BookingForm(data) In [5]: f.save() In [6]: for each in Location.objects.all(): ...: print each.place, each.inuse ...: PlaceA True PlaceB True PlaceC True 
  • Внешний ключ из одного приложения в другое в Django
  • Создание модели профиля с использованием как InlineAdmin, так и post_save сигнала в Django
  • Создание комбинированного индекса из модели Django
  • Являются ли экземпляры Django Model Hashable?
  • Перемещение многомерного словаря в django
  • Django - проверьте, содержит ли список что-то в шаблоне
  • Хорошие способы сортировки набора запросов? - Django
  • отправить выбранное значение из форм Django в views.py
  •  
    Interesting Posts for Van-Lav

    Точка безубыточности оптимизации: многократно повторяйте набор или конвертируйте в список в первую очередь?

    Сценарий python и зависимостей Bundle в один файл

    json.dump throwing "TypeError: {…} не является сериализуемым JSON" на, казалось бы, действительном объекте?

    mongoengine – запрос, как фильтровать по размеру ListField

    преобразование из float в Decimal в python-2.6: как это сделать и почему они этого не сделали

    Как получить список номеров ошибок (Errno) для типа Exception в python?

    Взаимодействие с показателем matplotlib python: присвоить значение выбранным функциям

    Как изменить размер рисунков, нарисованных с помощью matplotlib?

    Как обнаружить в подпроцессе, когда родительский процесс умер?

    Хранение пользователя и пароля в базе данных

    Создать объект из класса в отдельный файл

    Получение среднего значения множества осей массива numpy

    повысить значение ValueError («длины строк должны совпадать для сравнения») при манипулировании файловой рамкой

    Использование свойства () в методах класса

    Python + GTK: как установить выбранную строку на gtk.treeview

    Python - лучший язык программирования в мире.