Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
It is a best practice use a Primary Key in a serializer who do not represent a Model Object?
I'm creating an endpoint in Django for a post REST API. I put the parameters of the post body on a class, to handle it internally, but the senior developer says it is better to use a serializer. I create a serializer and everything worked perfectly until the same senior says I have to add a PrimaryKeyRelatedField. That is when my confusing started because this serializer is not for a Model, but for the body of the request object (who has 3 parameters, one mandatory and two optional), and when I added the mandatory parameters as PrimaryKeyRelatedField, I start to receive on the validated_data an empty OrderedDict() My questions are: It makes sense to have a PrimaryKeyRelatedField in a serializer who does not represent a Model? In case it makes sense, how I can make it work (or why when I make one of the fields primary key, I receive an empty dict?) PS: I make sure to send the right data to the endpoint, so this is not a case of receiving an empty OrderedDict because I did not send the mandatory field -
How to start Django models auto increment key from a certain number like 2456?
In mysql if you want to start your auto-increment key from 2456 you can write AUTO_INCREMENT=2456 Also in PostgreSQL we can do this by using Sequence CREATE SEQUENCE serial START 2456; INSERT INTO distributors VALUES (nextval('serial'), 'nothing'); But in Django Rest Framework or Django by default auto-increment starts from 1. If I have a model like this class Content(models.Model): title = models.CharField(max_length=70, blank=False, default='') description = models.CharField(max_length=200,blank=False, default='') published = models.BooleanField(default=False) How can I make sure that the first Content starts from 2456? -
Stack advice for a data visualization project
Since I'm not familiar with all the frontend and backend technologies, I wanted to ask here to get some "best possible approach" ideas. So here is what I wanna do: I have a couple of scripts written in python that do some scientific calculations and modellings by using source and target data in csv formats. Then outputs the results as a text file. 1-) I want to create private user profiles that has custom UI, something like Bootstrap admin dashboard templates with charts, maps and graphs that attached to the user's database. 2-) An admin interface where I can implement and run my python scripts, print the results to a spesific user's database where the charts&graphs recieves their data from. 3-) It will be a commercial platform, so a CMS feautures are needed for tracking orders and etc. I initially thought going with Vue & Django but I'm not so sure it's the best and easiest way of up and run such a project. I appreciate the experienced user's opinions. Thanks in advance. -
Problem with hyperlink in django project in templates html
I have a problem with the hyperlink in my django project. I use python 3.8.5 django 3.1.1. I created 2 applications: blog and pages (with many subpages). https://github.com/Charnel2500/blog_ai_py385_django311 This is my base.html <!DOCTYPE html> <html lang="en"> <link> <meta charset="UTF-8"> <title>Strona startowa</title> <link rel="stylesheet" href="base.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> </head> <body> <div w3-include-html="base.html"></div> <div class="container"> <h1>Witaj użytkowniku w świecie sztucznej inteligencji</h1> <section> <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> <a class="navbar-brand" href="">Strona Główna</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="blog/"> Newsy <span class="sr-only">(current)</span></a> </li> <li class="nav-item active"> <a class="nav-link" href="history/"> Historia </a> </li> <li class="nav-item active"> <a class="nav-link" href="present/"> AI obecnie <span class="sr-only">(current)</span></a> </li> <li class="nav-item active"> <a class="nav-link" href="philosophy/"> Filozofia AI <span class="sr-only">(current)</span></a> </li> <li class="nav-item active"> <a class="nav-link" href="chatbot/"> Chatbot <span class="sr-only">(current)</span></a> </li> <li class="nav-item active"> <a class="nav-link" href="talk/"> Rozmowa z moim chatbotem <span class="sr-only">(current)</span></a> </li> </div> </nav> </section> {% block content %} {% endblock %} <img src="AI.jpg" alt="Nie znaleziono obrazu"> </div> </body> </html> Here you can see my hyperlinks <li class="nav-item active"> <a class="nav-link" href="blog/"> Newsy <span class="sr-only">(current)</span></a> </li> … -
Django, same file at the output of two different loaded files on one page
model.py: class InJPG(models.Model): file_path = models.FileField(upload_to="media",unique=True) #in forms.py I am taking only this file_path in meta class views.py from model import InJPG def get_name(request): if request.POST: file1=InJPG(request.POST or None) file2=InJPG(request.POST or None) if file1.is_valid(): file1.save() print(file1) if file2.is_valid(): file2.save() print(file2) return redirect(get_name) return render(request,'files.html',{'file1':file1,'file2':file2}) files.html ... {% block page %} <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{file1}} {% csrf_token %} {{file2}} <button type="submit">upload file2</button> </form> {% endblock %} Situation: As you can see I have page where I am uploading two separate files using browse option in Django, and then to Upload them I'm using submit button, in same form in html file. Problem: I don't know why, but after submit, when I am checking which file has been uploaded, (using print(file1) and print(file2) ) I am receiving ONLY file2. In models.py I have parameter unique=True so names are not identical but, they are coming from same file (file2) How to solve it, and receive file1 and file2 in same method inside view.py ? -
How to leverage Django forms in Next.js frontend application?
I am developing an application which has backend written in Django (Django REST Framework API) and frontend written in Next.js. I am now facing a situation where I need to implement a form that is highly correlated with my Django models. Is there a way to leverage Django's own form system instead of re-implementing it from scratch in Next.js? -
By Post request received data is None. Why it's possible
I have django app in it's views.py created for accepting, and saving objects from received data into database. from .models import Hook def hooktrack(request): source=requests.POST.get("source") b=Hook(dsourse=source).save() Than I link this view to .urls.py urlpatterns = [ path("hooktrack/",hooktrack), ] My full url use http protockol not https maybe it involved in my problem I several times tested hooktrack view and it was accept and save received data. curl -d "source=google" -X POST http://example.net/hooktrack/ After curling sent source=value accessible to query from dB. from my.models import Hook a=Hook.objects.all() for item in a: print(item.dsource) ...google Than I linked my hooktrack view to production for accepting hooks from our business partner. After receiving them all of them saved to database but has None value -
Operational error while adding values in a text field in django
I get this error when I add a something to the text field.I'm trying to create a project where someone can enter random messages. OperationalError at /admin/submit/submit/add/ no such table: main.auth_user__old Request Method: POST Request URL: http://127.0.0.1:8000/admin/submit/submit/add/ Django Version: 2.1 Exception Type: OperationalError Exception Value: no such table: main.auth_user__old Exception Location: D:\Anaconda1\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 296 Python Executable: D:\Anaconda1\python.exe Python Version: 3.8.3 Python Path: ['D:\\PyProjects\\Website', 'D:\\Anaconda1\\python38.zip', 'D:\\Anaconda1\\DLLs', 'D:\\Anaconda1\\lib', 'D:\\Anaconda1', 'C:\\Users\\heman\\AppData\\Roaming\\Python\\Python38\\site-packages', 'D:\\Anaconda1\\lib\\site-packages', 'D:\\Anaconda1\\lib\\site-packages\\win32', 'D:\\Anaconda1\\lib\\site-packages\\win32\\lib', 'D:\\Anaconda1\\lib\\site-packages\\Pythonwin'] Server time: Mon, 5 Oct 2020 17:19:26 +000 This is my models.py from django.db import models # Create your models here. class Submit(models.Model): title = models.TextField(max_length=140, default='SOME STRING') status = models.TextField(max_length=140, default='SOME STRING') description = models.TextField(max_length=140, default='SOME STRING') Here is my setting.py installed apps INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'submit.apps.SubmitConfig', ] Here is my apps.py from django.apps import AppConfig class SubmitConfig(AppConfig): name = 'submit' Here is my admin.py from django.contrib import admin from .models import Submit # Register your models here. admin.site.register(Submit) I also ran python manage.py makemigrations and python manage.py migrate Please help me...Thanks in advance -
Not Found: Requested url was not found on this server. AWS django elastic beanstalk
Hello let me apologize in advance since I am a beginner and this may be a very simply fix but I just launched my first elastic beanstalk server trying to host my portfolio. I followed the tutorial laid out by amazon at https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html but something must've gone wrong. I'll include a picture of my hierarchy, my applications.py and my urls.py if you need anything else don't hesitate to ask any help is very appreciated thanks! """ WSGI config for Portfolio project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ """ import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Portfolio.settings') application = get_wsgi_application() There is my application.py and now my urls.py from django.contrib import admin from django.urls import path, include from . import views urlpatterns = [ path('', views.index, name='index'), path('admin/', admin.site.urls), path('sudoku/', views.sudoku, name='sudoku'), ] and finally my hierarchy enter image description here -
How to mock info.context in Django / Graphene tests
Problem I'm trying to test a graphql query. The query requires that the user associated with the request (info.context.user) is a super user (.is_superuser). Otherwise it throws an exception. I'm trying to test that the query works properly but am unsure how to ensure that info.context.user.is_superuser resolves to true in the test. Please help! schema.py class Query(graphene.ObjectType): gardens = graphene.List(GardenType) def resolve_gardens(self, info): user = info.context.user if not (user.is_superuser or user.is_staff): raise Exception("You must be staff or a superuser to view all gardens") return Garden.objects.all() tests.py from graphene_django.utils.testing import GraphQLTestCase, graphql_query from users.models import CustomUser class TestGraphQLQueries(GraphQLTestCase): """ Test that GraphQL queries related to gardens work and throw errors appropriately """ def test_gardens_query(self): response = self.query( """ query { gardens { id name owner { id email } } } """ ) self.assertResponseNoErrors(response) Error Thrown gardens/tests.py:93: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../env/lib/python3.6/site-packages/graphene_django/utils/testing.py:114: in assertResponseNoErrors self.assertNotIn("errors", list(content.keys())) E AssertionError: 'errors' unexpectedly found in ['errors', 'data'] -------------------------- Captured log call --------------------------- ERROR graphql.execution.utils:utils.py:155 Traceback (most recent call last): File "/home/dthompson/Code/personal/gardenbuilder-backend/env/lib/python3.6/site-packages/promise/promise.py", line … -
Implementar botão com evento onchange [closed]
Coloquei um techo do codigo HTML de um projeto Django que peguei nesses dias, na aplicação na pagina web tem essa opção de SERVIÇO para o usuario escolher o tipo de serviço que ele quer em um dropdown, mas quando o usuario escoher 1 serviço a tela recarrega e o serviço fica no dropdown e segue para o outro dropdown que é o de veiculos que corresponde ao serviço que foi escolhido, estou tentando implementar uma opção para o usuario poder escolher mais de um serviço e clicar com botão quando ele terminar, (ainda não criei o botão), mas estou com problemas pq nesse codigo tem o evento ONCHANGE e quando seleciono o serviço so fica 1 apenas, usei o SELECT2 mas sem sucesso, o evento ONCHANGE que pode esta causando isso, por causa disso não estou conseguindo, alguem pode me ajudar nesse codigo? Como fazer essa implementação de poder selecionar varios serviços e finalizar com o batão e depois recarregar a pagina com os serviços escolhidos? <h3><strong>Serviço</strong></h3> <select id="servico_cad" name="servico_cad" onchange="saveValue(this);this.form.submit();"> {% for i in cad_servico %} <option value='{{i}}'>{{i}}</option> {% endfor %} <option value='Todos'>Todos</option> </select> -
Django REST difference in views and viewsets
I have a fairly simple REST api, but I still dont understand the difference between the type of views. Anything related to a model, I do through ModelViewSets and ModelSerializers. You can use the router, you have parameters in swagger docs, all good! BUT, if I dont have a model (for example I have a function that accepts 2 parameters (var1 and var2) and the POST requests multiplies them, what is my best option? I prefer an option which involves a serializer as I am hoping to get parameters showing in the Swagger Documentation. I know I have the ViewSet option but that doesnt give me parameters in swagger. Is there any option that does give me those options? -
Adding Days of the Week as choices (datetime object) in a model field
I have a field in my models where I want it to be a datetime field and it would just hold the days of the week as choices. Is this possible i.e. the choices are datetime objects with the days of the week as the value. I assume that by doing this, I'll be able to sort the objects in chronological order. So if object1 has tuesday and object2 has monday and object3 is friday -- it can be sorted as object2, object1, object3 -
Serializer removing data in Django 3.1
I'm trying to validate data in order to store it. But the serializer is removing valid fields. Here my code: models.py class MyModel(models.Model): user_id = models.UUIDField('action uid',default=uuid.uuid4,null=False,primary_key=True,blank=False,editable=False, unique=True) city = models.CharField('City', max_length=50, null=True, blank=True, editable=False) latitude = models.CharField('Latitude', max_length=50, null=True, blank=True, editable=False) longitude = models.CharField('Longitude', max_length=50, null=True, blank=True, editable=False) datetime = models.DateTimeField('datatime', null=False, blank=False, editable=False) serializer.py class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = '__all__' view.py def save_my_data(self, request): user_info ={ "user_id": data['user_uid'], "city": data['user_city'], "latitude": "17.6801", "longitude": "83.2016", "datetime": timezone.now() } serializer = serializers.MyModelSerializer(data=user_info) print( serializer.data ) # returns void Any thoughts about this? thanks in advance. -
Comments under Post
I created model Post and Comment, now I want to display comments from Post but I have a problem. In tutorial there is a line of code in html {% for comment in post.comments.all %} but isn't working in my app. If I set {% for comment in comments %} it works but displays all comments from models (I want only comments from the post). How to fix that? Below I pasted my code. models.py from django.db import models class Post(models.Model): title = models.CharField(max_length=64, blank=False, null=False) short_text = models.TextField(blank=False, null=False) text = models.TextField(blank=False, null=False) image = models.TextField(blank=False, null=False) date = models.DateTimeField(auto_now_add=True, blank=True) views = models.IntegerField(default=0) class Comment(models.Model): post = models.ForeignKey('main.Post', on_delete=models.CASCADE) author = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(auto_now_add=True, blank=True) approved_comment = models.BooleanField(default=False) def approve(self): self.approved_comment = True self.save() def __str__(self): return self.text views.py from django.shortcuts import get_object_or_404, render, redirect from .models import Post, Comment def index_pl(request): posts = Post.objects.all() return render(request, 'index_pl.html', {'posts': posts}) def single_article_pl(request, id): posts = get_object_or_404(Post, pk=id) posts.views = posts.views + 1 posts.save() comments = Comment.objects.all() return render(request, 'single_article_pl.html', {'posts': posts, 'comments': comments}) html {% for comment in post.comments.all %} <div class="comment"> <div class="date">{{ comment.created_date }}</div> <strong>{{ comment.author }}</strong> <p>{{ comment.text|linebreaks }}</p> </div> {% … -
celery beat and worker doesn't work as expected
I want to make two functions that update and show a global list named websites, and execute them by celery. To initialize websites, I made a file named config.py: # config.py # I have to declare global variables outside of the init(), # otherwise Django doesn't recognize these global variables outside of the `config.py` global websites global flag flag = True # this method should be executed just One time!!! def init(): global flag flag = False global websites websites = [] print("===========IN Config.init()==========") I made two functions to be executed, check_list() executes every 2 seconds and initializes and shows the websites content, and update_list() executes every 10 seconds and add some elements to websites. Here is my tasks.py: (I made some prints in order to make the finding bug process easy.) # tasks.py from celery import shared_task from .celeryapp import app from . import config @shared_task def check_list(): try: print("config.flag First : " + str(config.flag)) if config.flag: config.init() print("This should be seen one tiiiiiiiiiiiiiiiiiiiiime") print("config.websites check_list : ===> " + str(config.websites)) except Exception as e: print(e) @shared_task def update_list(): try: print("config.flag First : " + str(config.flag)) if config.flag: config.init() print("This should be seen one tiiiiiiiiiiiiiiiiiiiiime") urls = ['first', 'second', … -
How can i redirect to the same page when a function executed Django
I have a like function in views.py and whenever the function executes i want to return the user to the same page he/she was. what should i write in return of my function? -
ModelForm not rendering to page?
This is a strange one for me because this is not the only ModelForm I have in this project and the other one is perfectly fine. Could someone have a look and see why the 'bid_input' input field for my form is not showing up on the page? My views.py admittedly isn't quite complete and functioning the way I want it to but I was at least expecting the input box to show but only the 'Place Bid' is showing. models.py class Bid(models.Model): bidder = models.ForeignKey(User, on_delete=models.CASCADE, related_name="bidders") item = models.ManyToManyField(Listing, related_name="bid_item", default=None, blank=True) bid_input = models.DecimalField(max_digits=9, decimal_places=2, default=None) time = models.TimeField() forms.py class BiddingForm(forms.ModelForm): class Meta: model = Bid fields = ["bid_input"] widgets = { "bid_input": forms.NumberInput(attrs={'autocomplete':'off'}) } urls.py path("listing/<int:id>/bid", views.bidding, name="bidding") views.py def bidding(request, id): listing = get_object_or_404(Listing, id=id) if request.method == "POST": form = BiddingForm(request.POST or None) if form.is_valid(): newbid = form.save(commit=False) newbid.bidder = request.user newbid.item = listing newbid.time = timezone.now() bid = newbid.save() return redirect("listing", bid_id=newbid.id) else: return render(request, "auctions/listingPage.html", { "form": form}) else: form = BiddingForm() return render(request, "auctions/listingPage.html", { "form": form }) listingPage.html {% extends "auctions/layout.html" %} {% block body %} <div> <form action="{% url 'bidding' listing.id %}" method="POST" name="bid_input"> {% csrf_token %} {{ … -
Combine two querysets, common field with different values
I search in a model "ConsultantProfile", the relevance is represented by a field called "rank" in "queryset1". I Also search in related models and gather "ConsultantProfile" objects from that related models in "queryset2" and set rank manually "0.7" for them so i can union query sets. When i want to combine and merge queryset1 and queryset2, common objects have different rank values. The problem is in final "queryset" the "rank" field's value is a value of rank from first queryset and i can't choose the highest value for "rank" queryset1 = qs.filter(active=True).annotate( rank=SearchRank( vector, query, normalization=Value(2).bitor(Value(4)), ) ) ids: some "ConsultantProfile" objects ids queryset2 = ConsultantProfile.objects.filter(id__in=ids, active=True).annotate(rank=Value(5, FloatField())) queryset = queryset1 | queryset2 Failed solution I tried to solve the problem by iterate over both query sets and union manually but no thing changed! queryset = queryset1.none() for obj in queryset1: qs2_object_qs = queryset2.filter(id=obj.id) # object presents in queryset2 if qs2_object_qs.exists(): # obj from queryset1 has better rank than queryset2 obj if obj.rank >= qs2_object_qs.first().rank:k) queryset |= queryset1.filter(id=obj.id) queryset2 = queryset2.exclude(id=obj.id) else: queryset |= qs2_object_qs # object does not present in queryset2 else: queryset |= queryset1.filter(id=obj.id) for obj in queryset2: qs_object_qs = queryset.filter(id=obj.id) # object presents in queryset if qs_object_qs.exists(): … -
how to add initial value to Django IntegerField?
I want to add 20000 gift credit as a coustmer is created without using init function or calssMethod class Customer(models.Model): balance = models.PositiveIntegerField(null=True) -
JSONField doesn't allow null in Django 3.1
I'm trying to use a JSONField in Django, sometimes I need it be null so I defined it with null=True, blank=True, but when I'm validating with the Serializer I'm getting my_data: [This field can't be null]. Here is my code: models.py class MyModel(models.Model): my_data = models.JSONField('data', null=True, blank=True, editable=False) serializer.py class MyModelSerializer(serializers.ModelSerializer): my_data = serializers.JSONField() class Meta: model = MyModel fields = '__all__' view.py def save_my_data(self, request) info['my_data'] = None serializer = serializers.MyModelSerializer(data=info) # validate the data print( serializer.is_valid() ) #returns False print( serializer.errors ) #returns my_data: [This field can't be null] Any suggestions about this? Thanks in advance. -
While Uploading your Django Project to Cpanel Should we also include the Venv?
I had created a small django project. Now I need to upload it on my domain. While uploading should I include the Venv in it or not. These are the files: ``-Encrypt(folder) -.idea -fast(project) -decrypt(app) -fast -pages(app) -utils -db.sqlite3 -manage.py -venv -
How to Bulk update records in Django?
I have multiple fields in my database and I want to update all records on submit button, Please let me know how i can do it. Here is my models.py file... class Product(models.Model): name=models.CharField(default=None) type=models.CharField(default=None) father=models.CharField(default=None) model1=models.Foreignkey(Category, related_name='cat_product', on_delete=models.CASCADE) here is my views.py file... def display_data(request, id): test_display = Product.objects.all() context = { 'test_display': test_display } return render(request, 'page.html', context) here is my page.html file... <form method="POST" action={% url 'back:formupdate' %} {% csrf_token %} {% for test in test_display %} <p>{{ test.name }}</p> <p>{{ test.type }}</p> <p>{{ test.phone }}</p> <p><input type="text" name="father" value="{{test.father}}"></p> <p>{{ test.model1 }}</p> <button class='btn btn-success'>Update Record</button> {% endfor %} I want to update father record in all fields, I want to update bulk records... I want to update this record in all my database entries.... -
Python django.How to output a variable?
Js: <script> var interval function callAjax(){ $.ajax({ type: "GET", url: "../row_han_two", data: { 'id_group': $("#id_group").val(), }, cache : false, success: function(data){ rot_message = data interval = setTimeout(callAjax, 1000); } }); } callAjax() </script> views: from django.shortcuts import render from django.contrib.auth.models import User,Group from django.contrib.auth import models from create_group_handler.models import Parameters_User from django.contrib.auth.decorators import login_required from create_group_handler.models import UserProfile from django.http import HttpResponse, HttpResponseRedirect from rot.models import Rot_model from django.http import JsonResponse import time @login_required def row_han_two(request): rot_message = Rot_model.objects.filter(id_chat = request.GET['id_group']) return HttpResponse(rot_message) Please tell me how you can display the chat_message variable in html like this: {% for object in rot_message%} <div class="row"> <div class="col-xl-3 block_messeage"> <span class="span_block_messeage">{{object.name_author}} ,{{object.time_message}}</span> <br> {{object.text_message }} </div> </div> {% endfor %} Lorem, ipsum dolor sit amet, conctetur adipisicing elit. Амет, веритатис. Eveniet culpa eaque quisquam ducimus ut ratione quae ex reiciendis, rerum vel, Lorem, ipsum dolor sit amet, conctetur adipisicing elit. Амет, веритатис. Eveniet culpa eaque quisquam ducimus ut ratione quae ex reiciendis, rerum vel, Lorem, ipsum dolor sit amet, conctetur adipisicing elit. Амет, веритатис. Eveniet culpa eaque quisquam ducimus ut ratione quae ex reiciendis, rerum vel, -
Strange API response in DRF - works on server run, empties on reload
I'm trying to create a serializer and a view returning the amount of objects for two models : class Lieu(models.Model): nom = models.CharField(max_length=30, blank=False) adresse = models.CharField(max_length=200, blank=False) code = models.CharField(max_length=6, blank=False) ville = models.CharField(max_length=20, blank=False) pluscode = models.CharField(max_length=20, blank=False) class Meta: verbose_name_plural = "lieux" def __str__(self): return f'{self.nom} - {self.ville}' class Artiste(models.Model): nom = models.CharField(max_length=40, blank=False) type_artiste = models.CharField(max_length=20, blank=False) pays_origine = models.CharField(max_length=20, blank=False) ville_origine = models.CharField(max_length=20, blank=True) bio = models.TextField(blank=True) def __str__(self): return self.nom The result I expect is something like that : [ { "lieux_count": 3, "artistes_count": 2 } ] Here is the methodfield base serializer in serializers.py : from rest_framework import serializers from datamidi.models import Artiste, Lieu class AllStats(serializers.Serializer): lieux_count = serializers.SerializerMethodField('get_artistes_count') artistes_count = serializers.SerializerMethodField('get_lieux_count') class Meta: fields = ['lieux_count', 'artistes_count'] read_only_fields = [ 'lieux_count', 'artistes_count'] def get_artistes_count(self, obj): return Artiste.objects.all().count() def get_lieux_count(self, obj): return Lieu.objects.all().count() And here is the view : from itertools import chain from datamidi.models import Artiste, Lieu class AllStatsView(generics.ListCreateAPIView): aquery = Artiste.objects.all() lquery = Lieu.objects.all() queryset = chain(aquery, lquery) serializer_class = AllStats permission_classes = [IsAdminUserOrReadOnly] The result is quite strange, two problems When doing a run server, the values returned at http://127.0.0.1:8000/api/allstats/ are correct, but iterated as many times as the total …