Как получить доступ к объекту Django Model в другом представлении? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть такой код:

def my_view(request):
    # ...
    data=Data.object.create(xyx)
    data.id   # here data.id=20
    time.sleep(600) # here sleep 600 sec
    # within 10 min how can i get data oject in another view. 
    return HttpResponse("Done")

До завершения 10 минут я пытаюсь получить объект данных в оболочке, но данных нет Почему?

 >>> Data.objects.get(id=20)
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "/home/rails/projects/zyz/xyz/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method
        return getattr(self.get_queryset(), name)(*args, **kwargs)
      File "/home/rails/projects/xyz/xyz1.12/lib/python3.5/site-packages/django/db/models/query.py", line 380, in get
        self.model._meta.object_name
   data.models.DoesNotExist: Transfer matching query does not exist.
    >>> 

Ques.Как я могу получить объект данных, который передается в id = 20 в другом представлении перед возвратом HttpResponse (означает через 10 минут).

Я получаю data.models.DoesNotExist Я думаю, потому что объект данных не зафиксированв базе данных.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете заключить вызов create в транзакцию

from django.db import transaction

def viewfunc(request):
    # This code executes in autocommit mode (Django's default).

    with transaction.atomic():
        # This code executes inside a transaction.
        # create here
...