2016-05-31 8 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 

Die POST-Anfrage sende ich ist:Django | Tastypie: Erstellen Sie Datensatz mit ForeignKey__id

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

Ich erhalte den Fehler

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

Gibt es eine tastypie Weg, dies richtig zu tun? Die Datenbank erwartet nur die Fremdschlüssel-IDs. Welches ist was ich sende? Muss ich das Hydrat für jeden überschreiben? Das klingt ineffizient.

Antwort

1

Lassen Sie sich von der Datenbank nicht irreführen. Tastypie liegt direkt auf dem ORM des Django.

Also denken Sie an Ihren Fremdschlüssel als ein Objekt statt nur ID-Spalte. Sie sollten stattdessen Ressourcendarstellung Pfad verwenden:

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

Sie einfach Ressource uri Darstellung in tastypie der foregin Schlüssel verwenden.

Verwandte Themen