In meinem aktuellen Code hat ein Benutzer eine Liste von Zielen, denen er beigetreten ist. Ich möchte, dass ein API-Endpunkt alle verknüpften Ziele des Benutzers aufdeckt. Ich möchte in der Lage sein, diesen API-Endpunkt zu posten, zu platzieren und zu erhalten. Er erhält eine Liste der verbundenen Ziele, fügt der Liste der verbundenen Ziele ein Ziel hinzu oder aktualisiert die Liste der verbundenen Ziele.Wie man viele tanktop als Ressource mit tastypie?
# Joined Goal Resource
class JoinedGoalResource(ModelResource):
user = fields.ForeignKey(UserResource, 'user')
joined_goals = fields.ManyToManyField(GoalResource, 'joined_goals', full=True)
class Meta:
authentication = Authentication()
authorization = Authorization()
queryset = UserProfile.objects.all()
resource_name = 'joined_goal'
allowed_methods = ['get', 'post', 'put']
filtering = {
'user': ALL_WITH_RELATIONS
}
Das Problem mit dem obigen Code ist, dass es Userprofile Modell als queryset nutzt also, wenn ich einen Beitrag dazu bekommen, oder auf dem API-Endpunkt setzt, wird die Userprofile bewirken, anstatt die joined_goals des Benutzers.
Edit: Ich habe meinen Code geändert, so dass die verbundene Ressource überschreibt die obj_create-Methode und fügt nur die beigefügte Zielliste des angemeldeten Benutzers hinzu. Das Problem ist, dass die Methode erfordert, dass ich ein Bündel zurückgebe. Wie erstelle ich das Paket, das zurückgegeben werden soll? Ich tue so etwas wie dieses:
goal_resource = GoalResource
goal_obj = goal_resource.obj_get(pk=1)
goal_bundle = goal_resource.build_bundle(obj=goal_obj, request=request)
return goal_bundle
Aber die obj_get funktioniert nicht, wenn in einem Argument von pk = 1
Es wäre sehr schön, eine Lösung über den "triciest part" zu sehen, denn es gibt immer mehr Fragen wie diese [Q1] (http://stackoverflow.com/questions/8613522/how-to-put-product- to-cart-via-tasytpie-api) [Q2] (http://stackoverflow.com/questions/10111734/tastypie-add-element-to-a-many-to-many-relationship) Q1 war mein Grund für die Registrierung auf stackoverflow :) – seb
Also sollte jemand eine gute Frage stellen. Bei dieser Frage ging es darum, wie man die Objekte ausstellt und wie man mit ihnen interagiert. Ich denke, ich habe darauf geantwortet. Ich gab auch Richtlinien, wie man den Teil, den du erwähnst, implementiert. Es ist nicht schwer, es erfordert nur ein wenig Aufwand, um zu sehen, wie ModelResource funktioniert und was was anruft. Wenn Sie möchten, stellen Sie uns bitte eine Frage, zeigen Sie uns, was Sie versucht haben und wo Sie ein Problem haben und ich werde es gerne tun Hilfe. SO soll aber nicht "Code für mich schreiben" sein. – kgr
Und ich denke, dass ich jeden Punkt in Q1 vor 3 Monaten erfüllt habe. – seb