0

私は2つのモデルを持っていRecieved_orderますorder.

class Order(SmartModel):

    restaurant = models.ForeignKey(Restaurant,null=True,blank=True,default = None,help_text="The restaurant the customer order from")
    #contact info
    email = models.EmailField(max_length=50,help_text="Needed as alternative")
    mobile = PhoneNumberField(max_length=20,default='+25078######')

class Recieved_Order(SmartModel):
    item = models.ForeignKey(Item)
    date_added = models.DateTimeField(auto_now=True,auto_now_add=True)
    quantity = models.IntegerField(default=0)
    price = models.DecimalField(max_digits=9,decimal_places=2)
    order = models.ForeignKey(Order)

私は、レストランのマネージャー (ユーザー) が、Recieved_orderログイン時に特定のレストランに対する注文 ( ) を受け取ることができるようにしたいと考えています。

class Recieved_OrderCRUDL(SmartCRUDL):
    model = Recieved_Order
    actions = ('create','read','update','delete','list')
    permissions = True

    class List(SmartListView):
        fields = ('order_email','order_mobile','order_billing_city','item.name','item.price','quantity','order_id','order_restaurant')
        search_fields = ('date_added',)

        def get_queryset(self,*args,**kwargs):
            queryset = super(Recieved_OrderCRUDL.List, self).get_queryset(*args,**kwargs)
            if self.request.user.is_superuser:
                return queryset
            return queryset.filter(order=self.request.user) 

上記で、私は2つの異なるレストランでテストしています.レストランと、それがうまくいかない. 特定のレストランの間違った注文を返します。

私は何をしていないのですかget_queryset()

4

2 に答える 2

2

ここで混乱することが起こっています:

return queryset.filter(order=self.request.user) 

Orderオブジェクトに対してオブジェクトをフィルター処理するクエリを作成するように指示していUserます。

適切な結合を構築できるように、注文をユーザーに結び付けるサンプル コードに欠けているものはありますか?

于 2013-04-10T21:46:52.207 に答える