Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Add total pages to the Django Rest Framework response when using pagination
At the Django Rest Framework Documentation you can add pagination according to the document at this link: https://www.django-rest-framework.org/api-guide/pagination/#modifying-the-pagination-style class StandardResultsSetPagination(PageNumberPagination): page_size = 100 page_size_query_param = 'page_size' max_page_size = 1000 and the response will look like: HTTP 200 OK { "count": 1023 "next": "https://api.example.org/accounts/?page=5", "previous": "https://api.example.org/accounts/?page=3", "results": [ … ] } How can I add "total_pages" to the response? HTTP 200 OK { "count": 1023 ==>"total_pages": 12 "next": "https://api.example.org/accounts/?page=5", "previous": "https://api.example.org/accounts/?page=3", "results": [ … ] } I looked into the DRF code and saw the PageNumberPagination class has a "num_pages" property. But I'm not sure how to call it in the StandardResultsSetPagination class. https://github.com/encode/django-rest-framework/blob/0323d6f8955f987771269506ca5da461e2e7a248/rest_framework/pagination.py -
Passing json data to django template and then to chartjs
I have two problems here. problem 1: I was trying to get my data converted to JSON and then pass it to a django template.But somehow it throws "Uncaught SyntaxError: Unexpected token '&'" when i checked in the console. However the data when put in between {{}} in django html template renders properly. Then found out my JSON data came with replaced all the quotes with & quot;. Why is this happening? How to solve this? views.py def tweetCount(request): tweetCount = api2.get_recent_tweets_count(query) tweetData = [] for tweet in tweetCount.data: obj = {} obj['end'] = tweet['end'] obj['count'] = tweet['tweet_count'] tweetData.append(obj) tweetData = json.dumps(tweetData) return render(request, 'tweetCount.html', {'tweetData' : tweetData}) tweetCount.html {% extends 'main.html' %} {% block content %} <p>{{ tweetData }}</p> <div id="container" style="width: 75%"> <canvas id="chart"></canvas> </div> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script> var data = {{tweetData}} console.log(data) </script> {% endblock %} problem 2 : How do I use this data in chartjs ? I want a Time scale graph. Someone please help me with this. -
Django API ServerError 500 ChunkedEncodingError IncompleteRead
I made an API Server using Django restframework. And Android Client will use it. When I request POST in webpage, it works without any problem. But in android, It raise 500 internal server error.. I don't know the reasons. Then I try to request using httpie on django terminal. It raised 500 Internal ServerError and ChunkedEncodingError. (venv) C:\github\dj-postgres-heroku>http --json -v POST asap-ds.herokuapp.com/users/profiles nickname="키위" introductin="http응답확인" jobs=null related_user={"phone_nm"="01044447777", "login_ID"="Qkrgydnjs99", "age"=20,"gender"=0,"password"="Qkrgydnjs99"} POST /users/profiles HTTP/1.1 Accept: application/json, */*;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 206 Content-Type: application/json Host: asap-ds.herokuapp.com User-Agent: HTTPie/2.6.0 { "age": "20,gender=0,password=Qkrgydnjs99}", "introduction": "http응답확인", "jobs": "null", "login_ID": "Qkrgydnjs99,", "nickname": "키위", "related_user": "{phone_nm=01044447777," } HTTP/1.1 500 Internal Server Error Connection: keep-alive Content-Type: text/html Date: Tue, 23 Nov 2021 03:38:37 GMT Referrer-Policy: same-origin Server: gunicorn Transfer-Encoding: chunked Via: 1.1 vegur X-Content-Type-Options: nosniff http: error: ChunkedEncodingError: ('Connection broken: IncompleteRead(5578 bytes read, 4662 more expected)', IncompleteRead(5578 bytes read, 4662 more expected)) When I request on webpage, I works well. HTTP 201 Created Allow: GET, POST, HEAD, OPTIONS Content-Type: application/json Vary: Accept { "nickname": "악어", "introduction": "웹페이지에서", "jobs": null } enter image description here Please anybody help me.. -
My save() method dosen't work when user has foreignKey set to object None
I have a user update form. The user model contains a field that is a foreign key to a group object. When I want to update a user that does not have a group set (value = None) then the save() method does not get called after click "save" button. group_name = models.ForeignKey(Group, on_delete=models.CASCADE, blank=True, null=True) -
Unable to get records using Django ORM
Problem: Trying to get a record using Django ORM, from a table that contains a JSON field, I'm using the following line: test_object = House.objects.get(id=301) Error TypeError: the JSON object must be str, bytes or bytearray, not dict Possible issue Noticed that a previous developer updated the format of the JSON field in the table, seems that JSON had a bad format. Script used to format the JSON column: for i in data: jsonstring = json.dumps(i.result) new_clear = jsonstring.replace("\\", "") new_clear = jsonstring.replace("NaN", "null") i.result = json.loads(new_clear) i.save() Comments In pgAdmin the JSON field looks good and it is formatted properly, see a partial copy of the JSON below: {"owner_id": 45897, "first_name": "John", "last_name": "DNC", "estate_id": 3201, "sale_date": "3/18/19", "property_street": "123 main st", "property_city": "Miami", "property_state": "FL", "property_zipcode": 33125, "Input_First_Name": "John", "Input_Last_Name": "DNC"} I would like to know how to deal with this JSON field in order to query the object. Any help will be appreciated. Thanks. -
Celery/redis tasks don't always complete - not sure why or how to fit it
I am running celery v 4.0.3/redis v 4.09 in a django v 3.0.1 application (Python v 3.6.9). I am also using face_recognition in a celery task find_faces to find faces in the images I have uploaded to the application, among other image processing celery tasks. There are no issues processing five or fewer image files in that all the image processing celery tasks complete successfully. When I have the image process tasks (including find_faces) iterate over 100 images there are 10-30 images where the find_faces task does not complete. When I use flower v0.9.7 to take a look at the celery tasks, I see that the find_faces task status is "started" for those images that did not complete. All the other images have find_faces task status as "success". The status of these "started" tasks never changes, and there are no errors or exceptions reported. I can then run the image processing tasks, including the find_faces task, on each of these images individually, and the task status is "success". These results do not change if I run celery as a daemon or locally, or if I run the django app using wsgi and apache or runserver. Flower also reports that retries … -
How to sum annotation values by groupby in Django
In Django, an error occurs when calculating (Sum) with the value obtained by annotate rather than as a unique field of the model. Is it possible to calculate with only unique fields? I want to find Sum by groupby 'enroll_injection' value into 'student__research' . enroll_injection = test.filter(Q(student__is_deleted=0))\ .values('student')\ .annotate(injection=Max('injection_date'), enroll=Max('enroll_date'))\ .values('student__research')\ .annotate(enroll_injection=Cast(F('enroll_date'), DateField()) - Cast(F('injection_date'), DateField()))\ .values('assignment__research__research_name', 'enroll_injection')\ .order_by('assignment__research__research_name') Error: Cannot compute Sum('<CombinedExpression: Cast(F(enroll_date)) - Cast(F(injection_date))>'): '<CombinedExpression: Cast(F(enroll_date)) - Cast(F(injection_date))>' is an aggregate -
Django tests are not outputting Messages in template rendering
I can't seem to get a unit test to check if Messages are rendering properly in my template. As per my template, I'm not getting any output where the messages should be listed. I'm using pytest 6.2.5 and Django 3.1.13 if that's helpful. Here is my test code: import pytest from django.contrib import messages from django.contrib.messages.middleware import MessageMiddleware from django.contrib.sessions.middleware import SessionMiddleware from django.test import RequestFactory from django.views.generic import TemplateView pytestmark = pytest.mark.django_db class TestBaseTemplate: def test_messages_middleware(self): request = RequestFactory().get("/") view = TemplateView.as_view(template_name="base.html") middleware1 = SessionMiddleware() middleware1.process_request(request) request.session.save() middleware2 = MessageMiddleware() middleware2.process_request(request) foobar_msg = "Hello, world!" messages.info(request, foobar_msg) request.session.save() response = view(request) response.render() content = response.content.decode("utf-8") # This assert fails assert foobar_msg in content My message block in the template (base.html) is straight-forward (and does work in views that send messages): {% if messages %} <div> {% for message in messages %} <p>{{ message }}</p> {% endfor %} </div> {% endif %} I can see through debugging that before you get to rendering the response that the "Hello, world!" message is being noted properly in the request via the Session/Message middleware, it's just not being rendered in the response. Any ideas on what I'm missing? Do I need to do … -
Django 3.2 - login form on homepage
I’m fairly new to Djanjo, and I have got a simple app working, however all the tutorials I can find have a “login” link on the homepage which redirects to a login page, this seems unnecessary ( at least for what i want ), I’d prefer to have the login page on the homepage, so the user can log straight in from there. I found some very old questions on here where people asking same/similar, but the answers seem old and perhaps even overly complicated. I think what I need to do, is to somehow set my urls.cfg in config/ for ‘’ to point to the built in auth view, but I cannot find a clear example of that. I’d like to achieve it with minimal customization. Just looking for an upto date pointer in the right direction for latest Django 3 please, if anyone can help me better understand what I should do. -
creating a delay in an html render in django?
I'm making a chatbot for practice in Django. When the user sends a message, the chatbot responds a few seconds later. I can display the text of the user and chatbot be in the template below. I'm unsure of how to create this delay. I understand that using javascript we can use the timeout() function: setTimeout(() => { console.log("World!"); }, 2000); Currently this is what I have: {% extends 'chat.html' %} {% block chatStream %} {% for item in chat %} <p> <b>user:</b> {{item.user}} <br> <b>bot:</b> {{item.bot}} <br> </p> {% endfor %} <form action="/send/" method = "post">{% csrf_token %} <input type="text" name="userMessage"> <input type="submit" value="Send to smallest_steps bot"> </form> {% endblock %} How do I create the delay between the user and bot? Thanks -
How do i make a counter that works for me on django Models
i have a question. i am trying to make some counter for my models. i have model- personeel and kwalification. i want to make a couter that counts how mutch personeel got the same kwalification like if 2 personeel got ehbo then it counts 2. def kwalificatietotaal(request): count = Kwalificaties.objects.annotate(ehbo=Count('wel')) teller = 0 if count == count: teller += 1 print(count) return render(request, 'accounts/kwalificatieTotaal.html') class Kwalificaties (models.Model): objects = None TREIN_SOORTEN = ( ('Traxx', 'Traxx'), ('Intercity Direct', 'Intercity Direct'), ('Intercity Nieuwe Generatie', 'Intercity Nieuwe Generatie'), ('Intercity Rijthuig', 'Intercity Rijthuig') ) E_H_B_O = ( ('Wel', 'Wel'), ('Niet', 'Niet'), ) EXTRA_KENNIS = ( ('Bio werkzaamheden', 'Bio werkzaamheden'), ('Kuil werkzaamheden', 'Kuil werkzaamheden'), ('Aardwind werkzaamheden', 'Aardwind werkzaamheden'), ('Airco Monteur', 'Airco Monteur'), ('Z.Z-Deuren Monteur', 'Z.Z-Deuren Monteur'), ('Vooropnamen Elektrisch', 'Vooropnamen Elektrisch'), ('Rijbevoegd Monteur', 'Rijbevoegd Monteur'), ('MTC', 'MTC'), ('EBKC', 'EBKC'), ('Heftruck kwalificatie', 'Heftruck kwalificatie'), ('Hoogwerker kwalificatie', 'Hoogwerker kwalificatie') ) naam = models.ForeignKey(Personeel, null=True, on_delete=models.SET_NULL) treinen = MultiSelectField(max_length=200, choices=TREIN_SOORTEN) ehbo = MultiSelectField(max_length=200, choices=E_H_B_O) extra = MultiSelectField(max_length=200, choices=EXTRA_KENNIS) -
Import models function
I created a models within my page but when I attempted to run the page I received an error response celery_beat_1 | class ClassManager(models.Manager): celery_beat_1 | NameError: name 'models' is not defined I searched for fixes to this error online and most of the responses said to implement the import from django.db import models function. However, this is something I already have configured in my models page. Any idea on how to proceed forward? -
When to use each model relationship in Django?
I've been reading through the Django documentation and looking over some of the other answers on the site for a couple of hours now, yet I still can't get it to sink in. I know this isn't Django specific, but the examples I use will be from a Django project. My question boils down to when is it appropriate to use each: Many-to-many relationships Many-to-one relationships One-to-one relationships One-to-one, more or less makes sense to me. Now for the other two. While I understand the differences between them in isolation, when it comes to using them practically in a project, I get confused. Here is an example: class User(AbstractUser): pass class Listing(models.Model): title = models.CharField(max_length=64) description = models.TextField() class Watchlist(models.Model): user = models.ForeignKey(User, related_name='watchlist', on_delete=models.CASCADE) item = models.ManyToManyField(Listing) class Comment(models.Model): user = models.ForeignKey(User, related_name='comments', on_delete=models.SET_NULL) comment = models.TextField() Would this be the correct use of Many-to-one(ForeignKey) and Many-to-many? Should Watchlist.item be a ForeignKey? Or is M2M correct? Wouldn't it simplify to make the 'Watchlist' part of the User class? (give them an empty list to populate with listing ID's) Why is Watchlist.user not a One-to-one relationship, if each watchlist belongs to a single user, and a user can only have … -
Serpy serializer change the field name
I have the following django code using serpy serializer: class UnitTypeSerializer(TypeSerializer): nameLocal = LocalizationSerializer() um = serpy.Field() It is serialize as 'nameLocal': {'key': 'INTEG', 'en_GB': '', 'ro_RO': None}, 'um':1 I would like to change "nameLocal" to "local" -
Get the value of an IntegerChoices object in Django?
Suppose I have the following Django (3.2) code: class AType(models.IntegerChoices): ZERO = 0, 'Zero' ONE = 1, 'One' TWO = 2, 'Two' a = AType.ZERO How do I get "Zero" (the string associated with a)? This is very similar to this question, except here we only have the IntegerChoices object, and not an associated model object. -
Django behind reverse proxy ?next= issue
I have deployed a Django application behind an nginx reverse proxy. This proxy handles multiple Django applications So the main url is for example https://www.example.com and then I use the reverse proxy to redirect to the specific Django application using subdirectory for example https://www.example.com/myapp The problem is that if I logout from myapp and try to access a page that requires login the redirect link is wrong, instead of https://www.example.com/myapp?next=/mainpage it gives me https://www.example.com/?next=/myapp/mainpage which is wrong since "myapp" cannot listen to requests from https://www.example.com/ Is there any way I can force Django to understand that the default url is https://www.example.com/myapp and not https://www.example.com? Thanks -
Django: Form is not saved and "matching query does not exist" error
I'm trying to create an app to import thanks to an uploaded .csv file data to my database. This is my code and when I try to submit a new file the form is not saved in the database and I'm redirected to the home. I can't also access the file If I create it in admin because I get this error Dataset matching query does not exist. I think my problem is within the ForeignKey and the OneToOneField that I'm not able to save properly? Only the model File is compiled by the user, while Dataset should be filled from the information in the file and linked to the file and the user automatically . Thank you all for your help! VIEWS @login_required def file_upload(request): data = None if request.method == 'POST': file_form = FileForm(request.POST, request.FILES) data_form = DatasetForm(request.POST, request.FILES) raw_file= request.FILES if file_form.is_valid() and data_form.is_valid(): data = request.FILES['file_upload'] data = pd.read_csv(data, header=0, encoding="UTF-8") data_form.instance.user = request.user.profile file_form.instance.user = request.user.profile file_form.instance.filename = raw_file['file_upload'].name Dataset.objects.create( name_user_A = data.iloc[0,1], name_user_B = data.iloc[1,1], [...] ) data_form.save() file_form.save() return redirect('upload_file') else: return redirect('home') else: form = FileForm() context = { 'data': data, 'second_row': second_row, 'file_form': file_form, 'message': message, } return render(request, 'upload_file.html', context) … -
Django simple_jwt auth worked with blank token
My project is running jwt authorization based on the simple_jwt library. Despite the fact that I do not pass the Authorization: Bearer token header, the request passes and returns 201, but if I pass the wrong token, everything works as it should and 401 is returned. My settings: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], } SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5), 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), 'ROTATE_REFRESH_TOKENS': False, 'BLACKLIST_AFTER_ROTATION': False, 'UPDATE_LAST_LOGIN': False, 'ALGORITHM': 'HS256', 'SIGNING_KEY': SECRET_KEY, 'VERIFYING_KEY': None, 'AUDIENCE': None, 'ISSUER': None, 'JWK_URL': None, 'LEEWAY': 0, 'AUTH_HEADER_TYPES': ('Bearer',), 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION', 'USER_ID_FIELD': 'phone_number', 'USER_ID_CLAIM': 'client_phone_number', 'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule', 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',), 'TOKEN_TYPE_CLAIM': 'token_type', 'JTI_CLAIM': 'jti', 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp', 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5), 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1), } MyView: class SetPin(generics.CreateAPIView): """Change or set pin code""" serializer_class = serializers.PinSerializer -
django filtering not chained tables
How i can select values from not chained tables in django class Products(models.Model): id = models.CharField(...) name = models.CharField(...) price = models.FloatField(...) image = models.ImageField(...) timestamp = models.DateTimeField(...) class HistoryPrice(models.Model): id = models.CharField(...) name = models.CharField(...) price = models.CharField(...) timestamp = models.CharField(...) Can i get image from Product for a minimal price in HistoryPrice query like this: query_history = HistoryPrice.objects.filter(product__id=product).annotate(min_price=Min('price')) -
django-filter: Passing parameter to field_name from view
I have two views that are using the same FilterSet and wanted to pass "field_name" as a parameter to the FilterSet. So far I have tried overriding the init method on the FilterSet with no luck. Example code: class FirstViewSet(viewsets.ModelViewSet): filter_backends = (filters.DjangoFilterBackend,) filter_class = MyFilter FIELD_NAME_TO_FILTER_ON = "some_field" class SecondViewSet(viewsets.ModelViewSet): filter_backends = (filters.DjangoFilterBackend,) filter_class = MyFilter FIELD_NAME_TO_FILTER_ON = "some_other_field" class MyFilter(filters.FilterSet): my_data = filters.CharFilter(field_name=FIELD_NAME_TO_FILTER_ON) My goal is to pass FIELD_NAME_TO_FILTER_ON from the view to the FilterSet. -
Django ORM better way to manipulate django ORM query to find related data
Models: class Tweets(models.Model): date_created = models.DateTimeField(default=now, verbose_name="Created on") tweet_data = models.TextField(verbose_name='tweet message') user = models.ForeignKey(User,on_delete=DO_NOTHING) class UserFollowers(models.Model): follower_user = models.ForeignKey(User,on_delete=CASCADE,related_name="follower") followee_user = models.ForeignKey(User,on_delete=CASCADE,related_name="followee") The UserFollowers table has record for who follows whom. Here, I need to get all tweets posted by people I follow Current approach: myfollowees = UserFollowers.objects.filter(follower_user=user_idx) print(myfollowees) myfolloweeslist = [] for ele in myfollowees: myfolloweeslist.append(ele.followee_user.id) my_timeline_tweets = Tweets.objects.filter(user_id__in = myfolloweeslist) generate the my followee list (list of people I follow) fetch tweets where tweet is posted by userid and is also present in myfolloweelist I would like to know if there is a better way to handle this. I tried this and it worked for just one value of user_idx but not for others: my_timeline_tweets = Tweets.objects.filter(user__follower = user_idx) -
Django form using model_formset not submitting
I am trying to create a screen to display all users in my app and then have the ability to update the displayed fields for the users. Basically an admin view of the users. I would like to be able to update multiple users at once by hitting submit. I used modelformsets to accomplish this, and also copied the html from the answer to another question so that the forms would be displayed inline (see below). Html template: <div class="card-body"> <form action="{% url 'bugtracker:users' %}" method='POST'> <table id="formset" class="form"> {{ formset.non_form_errors.as_ul }} {{ formset.management_data }} {% csrf_token %} {% for form in formset.forms %} {% if forloop.first %} <thead><tr> {% for field in form.visible_fields %} <th>{{ field.label|capfirst }}</th> {% endfor %} </tr></thead> {% endif %} <tr class="{% cycle 'row1' 'row2' %}"> {% for field in form.visible_fields %} <td> {# Include the hidden fields in the form #} {% if forloop.first %} {% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} {% endif %} {{ field.errors.as_ul }} {{ field }} </td> {% endfor %} </tr> {% endfor %} </table> <button class="btn btn-primary" type="submit">Submit</button> </form> </div> The view: @login_required def users(request): # users = User.objects.all() UserFormSet = modelformset_factory(User,fields=('username','first_name','last_name','email','is_contributor','is_projectmanager','is_administrator'), extra=0) … -
Django unable to restrict Model creation passing no parameter to objects.create()
I'm doing a site using Python, Django and pytest and the TDD method. One of my goals is to don't allow create a Item in database if I don't pass any arguments as parameters to the Item.objects.create(). I have this tests: def test_not_possible_to_create_items_with_empty_name(self): with pytest.raises(IntegrityError): item = Item.objects.create() Pytest fails at this test and says it's not raising: Failed: DID NOT RAISE <class 'django.db.utils.IntegrityError'> I was not sure if it's not raising or the type of error it raises is different, so I made a test to see if it's raising: def test_something(self): item = Item.objects.create() And this test is passing, so it's not raising. My Model looks like this: class Item(models.Model): name = models.TextField( null=False, blank=False, unique=True, ) I want to be unable to create a invalid name like "", but it's not raising as well: self = <item.tests.test.TestItemModel object at 0x7f79fd448910> def test_not_possible_to_create_item_with_blank_name(self): with pytest.raises(IntegrityError): item = Item.objects.create(name="") Failed: DID NOT RAISE <class 'django.db.utils.IntegrityError'> -
Django: How to cascade an update through multiple models?
I'm writing a Django based application to keep track of objects (Objekt) and their maintenance tasks. Objekts can be linked to a location. Location (0/1) --- (n) Objekt (1) --- (n) Task Location, Objekt and Task all have a status field with the following values: RED = "red" YELLOW = "yellow" GREEN = "green" STATUS = [ (RED, "Overdue tasks"), (YELLOW, "Pending tasks"), (GREEN, "All good"), ] I want that the Location map marker changes its color based on the status of the related Objekts and ultimatelly Tasks. I've tried to follow django best practices and create a fat model. from django.db import models from locationapp.models import Location from taskapp.models import Task from rules.contrib.models import RulesModel class Objekt(RulesModel): RED = "red" YELLOW = "yellow" GREEN = "green" STATUS = [ (RED, "Overdue tasks"), (YELLOW, "Pending tasks"), (GREEN, "All good"), ] name = models.CharField(max_length=200) description = models.TextField(blank=True) location = models.ForeignKey( Location, on_delete=models.SET_NULL, null=True, blank=True ) status = models.CharField(max_length=6, choices=STATUS, default=GREEN) def set_status(self): if Task.objects.filter(objekt=self.id).filter(status=Task.RED).exists(): self.status = Objekt.RED elif Task.objects.filter(objekt=self.id).filter(status=Task.YELLOW).exists(): self.status = Objekt.YELLOW else: self.status = Objekt.GREEN But somehow I'm not sure about my concept here... How can an update on Task trigger an update on the related Objekt. And how would … -
What could be good achitecture for softwares that use intense working servers?
I am working on an application that turns client's geographic polygon files (geojson, shapefile, kml) and do some hard processing (temporal and spatial interpolation) using these data. The hard processing should be done on the application server side and when it is finished, the interpolation results should be available to the user as maps, charts and tables. I am currently working with Python/Django but it does not seems to be a good choice given the framework strict architecture. What is the best architechture to build this app?