簡體   English   中英

Django post_save:數據庫尚未更新?

[英]Django post_save: database not yet updated?

我正在編寫用於訂購商品的Django應用程序。 所有訂單都有特定的類型Type。 如果Type.is_common == true,則無論用戶是否訂購此類型,都必須將其包含在交付中。 我正在使用post_save信號來檢查我的數據庫是否已經為某個交貨用戶提供了通用訂單。 這是代碼:

@receiver(post_save, sender=Order)
def create_common_order(sender, instance=None, created=False, **kwargs):
    """ This signal handler creates common orders (if delivery type
    definition contains any common types) for every first order of a
    user for a certain delivery. """
    # Don't handle this if the order is not for a delivery
    if not created or not instance or not instance.delivery:
        return

    # Don't handle Order with common types
    if instance.type.is_common:
        return

    # Loop through all types in type definition of delivery
    for t in Type.objects.all():
        # Look for a 'is_common' type
        if type.is_common:
            # Get or create an order with the respective values
            Order.objects.get_or_create(
               delivery=instance.delivery, 
               user=instance.user,
               type=type,
               defaults={'count':1}
               )

我的問題如下:有時會創建兩個普通訂單(如果幾乎同時創建了兩個新訂單)。 但為什么? db是否尚未在post_save中更新? 如何防止這種行為? 我正在使用sqlite3數據庫。

好的,所以在嘗試了許多不同的事情之后,我終於找到了一個解決方案(實際上很簡單):只需在調用get_or_create()之前添加Order.objects.update()即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM