2016-06-02 7 views
0

ich bin neu bei DJango Python webservices und ich bin kleine probleme mit den serializers.here ist mein code.django rest framework fremdschlüssel serializer ausgabe

**views.py** 
@csrf_exempt 
@api_view(['GET']) 
def sqlservice(request): 
    if request.method == 'GET': 
     posts = tbl_dcs.objects.all() 
     for each in posts: 
      manid = each.managerid_id 
      manname = Managerid.objects.get(id = manid) 
      nameser = managerSerializer(manname,many=False) 
      print nameser.data 
     serializer = PostSerializer(posts, many=True) 
     return Response({"resource":serializer.data}) 

**models.py** 
from __future__ import unicode_literals 
from django.db import models 
class Managerid(models.Model): 
    managername  = models.CharField(max_length=25) 
    def __unicode__(self): 
     return self.managername 
class tbl_dcs(models.Model): 
    name  = models.CharField(max_length=25) 
    location = models.CharField(max_length=50) 
    address  = models.TextField() 
    managerid = models.ForeignKey(Managerid,related_name='items') 
    phonenumber = models.IntegerField() 
    def __unicode__(self): 
     return self.name 

**serilizer.py** 
from rest_framework import serializers 
from mysqlservice.models import tbl_dcs 
from mysqlservice.models import Managerid 
class managerSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Managerid 
     fields = ('id', 'managername') 
class PostSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = tbl_dcs 
     fields = ('id', 'name','location','address','managerid','phonenumber') 

wenn ich den obigen Code das Ergebnis laufen ist ...

{ 
    "resource": [ 
    { 
     "id": 1, 
     "name": "ramesh", 
     "location": "hyd", 
     "address": "kphb,hyd", 
     "managerid": 10, 
     "phonenumber": 345345 
    }, 
    { 
     "id": 2, 
     "name": "kpti", 
     "location": "kphb", 
     "address": "kphb,6th phase,hyd", 
     "managerid": 10, 
     "phonenumber": 45456 
    } 
] 
} 

mein resultierendes json ich nicht in der Lage bin, die managername.How bekommt den Managernamen auf MANAGERID aus der unterschiedlichen Tabelle basierte zu bekommen? Bitte korrigieren Sie mich, wenn ich mich irgendwo irre. meine letzte json sollte wie unten sein ...

{ 
    "resource": [ 
    { 
     "id": 1, 
     "name": "ramesh", 
     "location": "hyd", 
     "address": "kphb,hyd", 
     "managerid": 10, 
     "phonenumber": 345345, 
     "managername":"xxxxx" 
    }, 
    { 
     "id": 2, 
     "name": "kpti", 
     "location": "kphb", 
     "address": "kphb,6th phase,hyd", 
     "managerid": 10, 
     "phonenumber": 45456, 
     "managername":"yyyyy" 
    } 
] 
} 

Antwort

0

Verwendung serializers.SerializerMethodField Manager-Namen wie unten zu bekommen ..

class PostSerializer(serializers.ModelSerializer): 
    managername = serializers.SerializerMethodField('get_manager_name') 

    class Meta: 
     model = tbl_dcs 
     fields = ('id', 'name','location','address','managerid','phonenumber','managername') 

    def get_manager_name(self, obj): 
     return obj.managerid.managername 
+0

Dank für Ihre Hilfe Trying2Learn.Please können Sie einmal überprüfen again.its nicht hinzugefügt die managername.please überprüfen Sie auch die views.py – user1335606

+0

haben Sie Managername in Felder in ManagerSerializer? – AceLearn

+0

yes.included. Aber wir ändern nichts an der views.py.i denke wir müssen auch in der views.py ändern. – user1335606