0

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

class Business(Basetable):
name = models.CharField(max_length=120)
slug = models.SlugField(max_length=150)
logo=models.OneToOneField("BusinessLogo",null=True,on_delete=models.SET_NULL)


class Address(models.Model):
business = models.ForeignKey("Business", related_name='biz_address')
address1 = models.CharField(max_length=100,null=True)
address2 = models.CharField(max_length=100,null=True)
state = models.ForeignKey(States,null=True,on_delete=models.SET_NULL)
city = models.ForeignKey(City,null=True,on_delete=models.SET_NULL)

view.py

class BusinessResource(ModelResource):
class Meta:
    queryset = Business.objects.filter(status='P').order_by('-id')
    resource_name = 'business'
    filtering = {
        'is_black_business': ALL,         
        'city': ALL_WITH_RELATIONS,

    }
 def dehydrate(self,bundle):
 if buss_address.city:bundle.data['city'] = buss_address.city.name
        else:bundle.data['city'] = ''
   // i am getting city here

問題は、都市を使用してビジネスをフィルタリングする必要があることです..どうすればそれを行うことができますか? 任意の推測

4

1 に答える 1

1
class BusinessResource(ModelResource):
   addresses = fields.ToManyField(AddressResource, 'biz_address')
   class Meta:
       filtering = {
                    'addresses': ALL_WITH_RELATIONS,
                 }

class AddressResource(ModelResource):
    city = fields.ToOneField(CityResource, 'city')
    class Meta:
       filtering = {
                     'city': ALL_WITH_RELATIONS,
                    }

2 番目の方法は、build_filters および apply_filters メソッドをオーバーライドしてカスタム フィルターを作成することです。

于 2013-02-11T14:51:41.203 に答える