Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:将数据从pre_save传递到视图_Python_Django - Fatal编程技术网

Python Django:将数据从pre_save传递到视图

Python Django:将数据从pre_save传递到视图,python,django,Python,Django,我有以下问题:我想将数据从模型预保存函数传递到我的views.py 原因是在我的pre_save函数中,生成了一个唯一的order_id。此唯一订单id还必须保存在会话id(request.session['order\u id']=unique\u order\u id)中。模型不接受请求,因此我尝试将其保存在my views.py中,但是如何在那里获取生成的唯一订单id 谢谢你的帮助 views.py def another_view(request): if request.PO

我有以下问题:我想将数据从模型预保存函数传递到我的views.py

原因是在我的pre_save函数中,生成了一个唯一的order_id。此唯一订单id还必须保存在会话id(request.session['order\u id']=unique\u order\u id)中。模型不接受请求,因此我尝试将其保存在my views.py中,但是如何在那里获取生成的唯一订单id

谢谢你的帮助

views.py

def another_view(request):

    if request.POST:
        # Generate unique order_id
        x = Order().save()
        request.session['order_id'] = x
        # This is how I hoped it to solve, but x is not passing any data, even when adding a return variable in pre_save 
models.py

# Imports (removed)
# Create your models here.
class Order(models.Model):
    order_id    = models.CharField(max_length=10, unique=True)
    updated     = models.DateTimeField(auto_now=True)
    timestamp   = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.order_id)

def order_pre_save_receiver(sender, instance, *args, **kwargs):
    instance.order_id = unique_id_generator(instance)
    # Here the unique order id is generated. Additionally I want to save this id as a session.



pre_save.connect(order_pre_save_receiver, sender=Order)

调用
x=Order().save()
时,您正在创建一个Order对象来更新它,而不是保存它

save()
方法不返回任何模型对象,而是更新调用它的对象

所以你要做的是

x = Order()
x.save() # at this point pre_save is called and unique id is updated
x.order_id # will be your updated order id

或者只创建(…),它同时执行
x=Order();x、 只需一次操作即可保存()。