Django rest framework не фиксирует данные в sqlite3 через POST, пока сервер не перезапустится

[CLOSED]Я только начал изучать django rest framework и столкнулся с проблемой. Вот мой код (views.py, urls.py, models.py, serializers.py):

#view.py:
class AllData(viewsets.ModelViewSet):
    queryset = Run.objects.all()
    serializer_class = RunSerializer

    def get_queryset(self):
        queryset = self.queryset
        start_date = self.request.query_params.get('start_date')
        end_date = self.request.query_params.get('end_date')
        if start_date is not None and end_date is not None:
            queryset = queryset.filter(Q(date__gte=start_date) & Q(date__lte=end_date))
        return queryset


#serializers.py:
class RunSerializer(serializers.ModelSerializer):
    class Meta:
        model = Run
        fields = '__all__'


#models.py:
class Run(models.Model):
    date = models.DateField()
    distance = models.DecimalField(max_digits=5, decimal_places=3)
    time = models.SmallIntegerField()

    def __str__(self):
        return str(self.distance)


#urls.py:
router = DefaultRouter()
router.register('all_runs', AllData, basename='all_runs')

urlpatterns = [
    path('average_data/', AverageData.as_view(), name='average_data'),
]

urlpatterns += router.urls

Итак, я начал с http://127.0.0.1:8000/all_runs/ и это работает. http://127.0.0.1:8000/all_runs/1 или что-то другое - тоже. (я уже добавил некоторые данные). Я вижу опции POST, DELETE и т.д. в веб-интерфейсе drf. Но... если я добавляю данные через POST:

  1. i see "POST /all_runs/ HTTP/1.1" 201 9187 - seems like OK.
  2. try to http://127.0.0.1:8000/all_runs/ again... and don't see added data!
  3. restart server (django by default, sqlite3, etc.) and... see added data! Seems like POST works, but i see data after re-starting server only in web-interface of drf. Same problems with Postman. Please, help. What is wrong in my code or common settings of django or something else? Thank you in advance!

p.s. есть дополнительный url к "среднему". я пропустил такой просмотр - это не по моей части.

UPD: получил совет и удалил .all() из queryset в классе и поместил его в return. было: queryset = Run.objects.all() + return queryset стало: queryset = Run.objects + return queryser.all() И теперь все работает!

Попробуйте заменить: queryset = self.queryset на queryset = super().get_queryset(). Это заставит заново оценить набор запросов.

Вернуться на верх