Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Tastypie:按ForeignKey筛选_Python_Django_Tastypie - Fatal编程技术网

Python Django Tastypie:按ForeignKey筛选

Python Django Tastypie:按ForeignKey筛选,python,django,tastypie,Python,Django,Tastypie,我希望Django Tastypie返回一个由ForeignKey过滤的查询。以下是我的两个模型: class Origin(models.Model): country = models.CharField(max_length=1024) class Fruits(models.Model): origin = models.ForeignKey(Origin) fruit_name = models.CharField(max_length=1024)

我希望Django Tastypie返回一个由ForeignKey过滤的查询。以下是我的两个模型:

class Origin(models.Model):
    country = models.CharField(max_length=1024)

class Fruits(models.Model):
    origin      = models.ForeignKey(Origin)
    fruit_name  = models.CharField(max_length=1024)
    is_sweet    = models.BooleanField()
    quantity    = models.IntegerField()
根据文档,我使用以下resources.py:

class FruitResource(ModelResource):
    class Meta:
        queryset = Fruits.objects.all()
        allowed_methods = ['get']      
        filtering = {
            "origin": ('exact',)
            }
这是我尝试访问的URL:

http://localhost:8000/api/v1/fruit/?format=json&origin__country=Nepal
访问该URL将返回以下输出:

{
  "meta": 
    {
      "limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 2}, "objects": 
        [
          {"fruit_name": "Apple", "id": 1, "is_sweet": true, "quantity": 10, "resource_uri": "/api/v1/fruit/1/"}, 
          {"fruit_name": "Banana", "id": 2, "is_sweet": true, "quantity": 10, "resource_uri": "/api/v1/fruit/2/"}
        ]
}
我应该提到,我使用此URL获得相同的输出:

http://localhost:8000/api/v1/fruit/?format=json

通过指定来源地的country属性来获取水果对象列表的正确方法是什么?

我能够根据它工作。为了其他人的利益,我在这里列出了最后的代码

from tastypie.resources import ModelResource, fields, ALL_WITH_RELATIONS

from fruits.models import Fruits
from origin.models import Origin

class OriginResource(ModelResource):
    class Meta:
        queryset = Origin.objects.all()
        resource_name = 'origin'
        filtering = {
            "country": ('exact',)
            }

class FruitResource(ModelResource):
    origin = fields.ForeignKey(OriginResource, 'origin', full=True)
    class Meta:
        queryset = Fruits.objects.all()
        allowed_methods = ['get']
        filtering = {
            "origin": ALL_WITH_RELATIONS,
            }
使用此代码,如果我点击
http://localhost:8000/api/v1/fruit/?format=json&origin__country=Nepal
,我得到以下预期输出:

{"meta": 
  {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1},
   "objects": [{
         "fruit_name": "Apple", "id": 1, "is_sweet": true, "origin":
         {"country": "Nepal", "id": 3, "resource_uri": ""},
         "quantity": 10, "resource_uri": "/api/v1/fruit/1/"
    }]
}