2017-06-21 2 views
1

Ich habe in diesem Vorlage sah, und es gibt so viel Unordnung im Code Rest Rahmen an einen Serializer vorbei ich eine harte Zeit nach der es habe: Pass a custom queryset to serializer in Django Rest Frameworkeine benutzerdefinierte queryset django

Jetzt noch, ich versuche zu schreiben Ein Serializer, der eine Liste aller Städte in meiner Tabelle der Veranstaltungsorte zurückgibt. Es kann viele Orte in jeder Stadt geben, aber ich möchte nur einmal den Namen der Stadt zurückgeben.

Ich weiß, ich muss einen benutzerdefinierten Modell-Manager erstellen, um das Abfrage-Set zu ändern, aber ich bin nicht sicher, wie es an den Serializer übergeben wird. Ich bin eher in Dokumentation und Beispiel verloren. Muss ich sql schreiben, oder? Deshalb ist es kein Problem, keinen Mentor zu haben.

was ich bisher habe.

models.py:

class Venue(models.Model): 
    name = models.CharField(max_length=150, blank=False) 
    description = models.CharField(max_length=1000) 
    image = models.ImageField(upload_to=imgUnique('venueMedia/venueImages')) 
    streetAddress= models.CharField(max_length=100) 
    city = models.CharField(max_length=100, blank=False) 
    state = models.CharField(max_length=100, blank=False) 

serializers.py:

from rest_framework import serializers 
from models import Venue, Room 

class citySerializer(serializers.Serializer): 

und mein benutzerdefiniertes Modell in models.py:

class CityListManager(models.Manager): 
def get_query_set(self): 
    return super(CityListManager, self).get_query_set().filter 

gesamten Code ist unvollständig, da ich Finde das heraus und setze alles zusammen

+0

Konnte Code hinzufügen? Was hast du bisher? –

+0

@ F.Caron hat gerade den Code hinzugefügt –

Antwort

1

so sieht aus wie ich es falsch gemacht habe in erster Linie hier ist der Arbeitscode

# queryset for cityListView 
def getcityList(): 

    cityList = Venue.objects.raw("""SELECT DISTINCT city 
           FROM Venue""") 
    return cityList 

class citySerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Venue 
     fields = 'city' 
     read_only_fields = 'city' 

class cityListViewSet(viewsets.viewSet): 

    def list(self, request): 
     queryset = getcityList() 
     serializer = citySerializer(queryset, many=True) 
     return Response(serializer.data)