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.

  • Django Rest Framework (DRF) Wie paginiere Klasse je nach query_params?
  • Hochladen von Bildern als Rohdaten im Django-Rest-Framework
  • Django Rest Framework: Implementierung von Many-to-Many-Beziehung in Serializer
  • Django rest Rahmen - mit detail_route und detail_list
  • So erstellen Sie einen Django-Benutzer mit dem ModellSerializer von DRF
  • Benutzerdefinierte URLs mit django rest Rahmen
  • Django Rest Framework fügt Klasse-Methode zu api hinzu
  • Übergeben Sie eine benutzerdefinierte queryset an Serializer in Django Rest Framework
  • MultiPartParserError: - Ungültige Grenze
  • Django Rest Framework & Entity-Attribut-Wert-Modell (EAV) Datenmodell
  • Django Rest Rahmen ignoriert has_object_permission
  • Python ist die beste Programmiersprache der Welt.