Как получить доступ к предыдущему значению поля в форме модели Django перед сохранением? - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно получить доступ к предыдущему значению поля экземпляра модели Django перед сохранением формы. Например, в методе form_valid необходимо получить доступ к предыдущим значениям экземпляра модели. Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

вы можете использовать копию предыдущего экземпляра модели с помощью copy, чтобы при сохранении нового экземпляра он не переопределял предыдущий экземпляр:

import copy

if form.is_valid():
    obj = YourModel.objects.get(pk=form.instance.pk)
    prev_obj = copy.copy(obj)
    // here you can access any field of your previous object related to that instance.
    // prev_obj.field
    new_obj = form.save()

Примечание. Это применимо только в том случае, если вы собираетесьобновите модель не во время создания.

0 голосов
/ 26 мая 2019

Представьте, что у вас есть MyModel таблица.Теперь давайте создадим instance из MyModel и вернем один экземпляр (row).

mymodel_instance = MyModel.objects.get(pk=14) # This returns instance of MyModel.
# Now lets get all values, before mymode_instance.
mymodel_qs = MyModel.objects.filter(pk__lt=mymodel_instance.pk) # This returns QuerySet (All values before mymodel_instance).
# iterate over all previous values.
for mymodel_obj in mymodel_qs:
    print(mymodel_obj, mymodel_obj.pk) # This will print all previous instance and id.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...