0
編輯:這種方法確實有效,我有一個錯字。謝謝@eran指出,在下面修正。如何用django-tastypie查詢ToManyField的屬性
在控制檯我可以這樣做:
Performance.objects.filter(ticket_blocks__price__gt=200)
和獲取具有價格高於$ 200門票塊表演。但是這個:
http://localhost:8000/api/v1/performance/?ticket_blocks__price__gt=200
給我KeyError: u'price'
。我究竟做錯了什麼?
models.py
class TicketBlock(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=8, decimal_places=2)
class Performance(models.Model):
start_time = models.DateTimeField(db_index=True)
end_time = models.DateTimeField(default=None, blank=True, null=True)
sold_out = models.BooleanField(default=False)
# All performance have at least one ticket block
ticket_blocks = models.ManyToManyField('TicketBlock')
api.py
class TicketBlockResource(ModelResource):
class Meta:
queryset = TicketBlock.objects.all()
allowed_methods = ['get']
resource_name = 'ticket-block'
filtering = {
'price': ALL
}
class PerformanceResource(ModelResource):
ticket_blocks = fields.ToManyField(TicketBlockResource, 'ticket_blocks', blank=True, null=True, full=True)
class Meta:
queryset = Performance.objects.all()
allowed_methods = ['get']
resource_name = 'performance'
filtering = {
'ticket_blocks': ALL_WITH_RELATIONS
}