2016-05-31 1 views
1
class D(BaseRsrc): 
    a1 = fields.ForeignKey(D1Resource, 'a1', full=True, blank=True) 
    a2 = fields.ForeignKey(D2Resource, 'a2', full=True, blank=True) 
    a3 = fields.ForeignKey(D3Resource, 'a3', full=True, blank=True) 
    class Meta(BaseRsrc.Meta): 
     resource_name = 'sample_endpoint' 
     queryset = M.objects.all() 
     include_resource_uri = True 

をレコードを作成します。Django | Tastypie:私は送ってPOSTリクエストがあるForeignKey__id

{"data": 
    {"a1_id":110,"a2_id":10802,"a3_id":"10804"} 
} 

私はエラー

{ 
"D": 
    { 
     "a1": ["This field cannot be null."], 
     "a2": ["This field cannot be null."], 
     "a3": ["This field cannot be null."]} 
} 

が正しくこれを行うtastypie方法はあり得ますか?データベースは、外部キーIDだけを必要とします。それは私が送るものです。それぞれの水和物を無効にする必要がありますか?これは非効率的に聞こえる。

答えて

1

データベースを誤解させてはなりません。 TastypieはDjangoのORMに直接置かれます。

だから、あなたの外来キーを単なるidカラムの代わりにオブジェクトと考えることができます。 代わりにリソース表現のパスを使用する必要があります:あなたは、単にtastypieのforeginキーでリソースのURI表現を使用

{"a1": "/path/to/a1resource/110", "a2": "/path/to/a2resource/10802", "a3": "/path/to/a3resource/10804"} 

を。

関連する問題