Django ModelForm - просто хочу изменить save (), чтобы иметь commit = False

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

Итак, для начала, я думаю, мне нужно изменить save(), чтобы по умолчанию для этой модели модели было commit = False.

Я просмотрел документы, и, поскольку все, что я хочу сделать, это изменить значение по умолчанию для этой конкретной модели на commit = False, мне интересно, как сделать эту простую модификацию. Если бы я мог просто сделать что-то вроде ниже, а затем отправить данные экземпляра себе по электронной почте.

class SK_form(ModelForm):
class Meta:
    model = Soup_Kitchen
    fields = ('name', 'address', 'phone_number', 'contact_person')

def save(self, commit=True):
    instance = super(SK_form, self).save(commit=False)
    return instance

person LVNGD    schedule 12.03.2014    source источник


Ответы (1)


Я не думаю, что это то, чем вы действительно хотите заниматься. Если вы сделали это таким образом, данные нигде не сохранятся. Поэтому, когда вы получите электронное письмо, вам придется вырезать и вставить данные обратно в форму Django, чтобы воссоздать экземпляр, прежде чем вы сможете добавить свои собственные данные и сохранить их.

Было бы лучше иметь логическое поле в модели, называемое, например, complete, которое записывает, были ли данные проверены и завершены, и по умолчанию имеет значение False. Затем у вас может быть собственный менеджер, который по умолчанию отфильтровывает все строки с полным = False.

person Daniel Roseman    schedule 12.03.2014