1

我正在尝试为具有队列验证的项目实施等候室。
一般的想法是将物品放入等候室,计算它的计数器(定义需要多少新物品来确认此物品的值),在添加每个新物品后减少它,最后在将计数器减少到零以下后确认它。如果等候室中已经有物品,则计算出的计数器会增加上一个物品的计数器,因此物品在队列中。
我的实现非常简单,但我发现这个解决方案非常快。但是引用上一个项目对我不起作用,我找不到原因 - 它经常从 Waiting 对象返回“随机”(或至少不是最后一个)值。

这是重要的代码片段:

class Waiting(models.Model):                                                       
    item = models.ForeignKey(Item)                                             
    counter = models.FloatField(default=0)                                         
    (...)
    def clearup(self): 
        (...) #here is decrementing and confirming part - it's working fine
    def save(self, update=False):
        if update:                                                                 
            return super(Waiting, self).save()                                     

        item = self.item                                                       
        self.clearup()
        (...) #nothing important
        self.counter = item.quantity * items_list[item.name][1]
        last = Waiting.objects.exclude(                                        
                item__name="Something I don't want here").order_by('-pk')
        if last:
            last = last[0]
            weight = items_list[last.item.name][1]
            self.counter += (last.item.quantity * weight)                       

        super(Waiting, self).save()

编辑:我是智障。

4

1 回答 1

0

几乎像往常一样——这是我的错。我用另一种方法解决了这个问题,这导致了这个问题。

无论如何,感谢您尝试帮助我。

于 2012-12-29T15:14:01.143 回答