Ungültiges Literal für int () mit base ten in listAPI view django rest rahmen

Ich benutze einen Blick in django Rest Rahmen. In dieser Ansicht dauert es eine Argumentstadt, um dann eine Liste zu holen, die eine Nachbarschaft in dieser Stadt hat.

Das Beispiel der URL sieht so aus:

 http://127.0.0.1:8000/api/neighborhood-list/chicago/ 

Der URL-Code sieht so aus:

 url(r'neighborhood-list/(?P<city>[a-zA-Z]+)/', VenueFilterOptionsView.as_view()), 

die Aussicht:

 class NeighborhoodListView(generics.ListAPIView): lookup_field = 'city' def list(self, request, city): self.city = city queryset = Neighborhood.objects.filter(city=self.city) serializer = NeighborhoodSerializer(queryset, many=True) 

Der serializer:

 class NeighborhoodSerializer(serializers.ModelSerializer): class Meta: model = Neighborhood fields = 'neighborhood' 

das Model:

 class Neighborhood(models.Model): city = models.ForeignKey(City, null=True) neighborhood = models.CharField(max_length=150, null=False) 

Was ich nicht verstehe ist, setze ich das Lookup-Feld in die Stadt, es sei denn, das funktioniert nur für Instanzen nicht Listen? Und auch ich benutze das listAPIView generic

Die Ausnahmestelle ist hier:

  /home/rickus/211hospitality/suitsandtables/backend/venv/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py in get_prep_value, line 966 

Und der Code auf Zeile 966 ist der folgende:

 def get_prep_value(self, value): value = super(AutoField, self).get_prep_value(value) if value is None: return None return int(value) 

Der Rückgabewert dieser Methode im init- Ordner, auf den die Stack-Trace verwiesen wird, wird jedes Mal als int gegossen. Also, ich denke jetzt die Frage ist, wie wir diesen Unsinn überschreiben oder um ihn herum arbeiten.

So jetzt arbeite ich meinen Weg zurück versuchen, herauszufinden, was los ist.

Wer hat irgendwelche Ideen?

One Solution collect form web for “Ungültiges Literal für int () mit base ten in listAPI view django rest rahmen”

Update – Meine ursprüngliche Antwort war falsch. Die lookup_field funktioniert eigentlich nicht mit den Attributen lookup_field und lookup_url_kwarg Attribute werden von Rest Frameworks DetailView in der Methode get_object(self) verwendet, um eine einzelne Instanz mit diesen get_object(self) abzurufen.

Ich habe die Antwort aktualisiert, damit es die Methode get_queryset(self) überschreibt, um die korrekt gefilterte Liste zurückzugeben. So sollte ListView angepasst werden.


Es sieht so aus, als hättest du deine ListView nicht richtig definiert. Das Problem scheint zu sein, dass Sie versuchen, auf die Cities Primary Key, die ein Integer-Feld, mit einem String, die nicht als Integer analysiert werden können, zu filtern. Ich werde aufschreiben, wie ich denke, deine Ansicht sollte aussehen, dass Sie versuchen, Ihre Filterung auf der Grundlage eines Feldes auf dem Stadtmodell zu tun.

 # models.py class City(models.Model): name = models.CharField(max_length=32) class Neighbourhood(models.Model): city = models.ForeignKey(City) # views.py class NeighbourhoodListView(generics.ListAPIView): queryset = Neighbourhood.objects.all() serializer_class = NeighbourhoodSerializer def get_queryset(self): return self.queryset.filter(city__name=self.kwargs.get('city') # urls.py urlpatterns = [ url( r'^neighbourhood-list/(?P<city>[a-zA-Z]+)/$', NeighbourhoodListView.as_view(), name='neighbourhood-list', ) ] 

Dies wird Ihre Nachbarschaften nach dem Namen der Städte filtern. Wenn du Nachbarschaften durch die Städte Primärschlüssel filtern möchtest, dann solltest du:

 # views.py class NeighbourhoodListView(generics.ListAPIView): queryset = Neighbourhood.objects.all() serializer_class = NeighbourhoodSerializer def get_queryset(self): return self.queryset.filter(city=self.kwargs.get('city')) # urls.py urlpatterns = [ url( r'^neighbourhood-list/(?P<city>\d+)/$', NeighbourhoodListView.as_view(), name='neighbourhood-list', ) ] 

Dies behebt die Ansicht und die URLs, um Nachbarschaften durch die Städte Primärschlüssel zu filtern. Dies wäre mehr performant, weil es nicht notwendig ist, eine Verbindung zwischen Stadt und Nachbarschaft durchzuführen.

  • Verwenden einer einzigen URL für GET und POST mit Django REST Framework list_route
  • Django rest rahmen queryset nicht bestellen
  • Create () argument after ** muss ein Mapping sein, nicht Unicode
  • Wie erstelle ich mehrere Objekte (verwandt) mit einer Anfrage in DRF?
  • Django Rest Framework: Implementierung von Many-to-Many-Beziehung in Serializer
  • Django Rest Framework 3.4 Fremdschlüssel Serialisierung und Upload Bilddatei
  • Wie benutzt man login_required in django rest view
  • Wie kann ich das Feld im Serializer hinzufügen?
  • Django Rest Rahmen ignoriert has_object_permission
  • MultiPartParserError: - Ungültige Grenze
  • Steuerausgabe von Django Rest Framework
  • Python ist die beste Programmiersprache der Welt.