Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django filtering doesn't work with float field
I'm trying to get some records from the MySQL database but it seems that filtering by float field doesn't work. When I filter just by user_id I receive all records but when I add the value clause just got DoesNotExist exception. I have the following models and query: class Record(models.Model): user_id = models.IntegerField() value = models.FloatField() class User(models.Model): value = models.FloatField() Record.objects.get( user_id=user.id, value=user.value ) user.value variable in the python code is 0.4 (float). The value column in the database is type float unsigned and its value is 0.4. I guess it's something because of the nature of float type but what is the right way to filter by float value using Django models? -
textarea offset when two different textareas are possible at the same location using an EventListener
I have an event listener which will show a textarea for writing a message depending on a the subject line selected. The code works but the second textarea is indented for some reason. The HTML code is: <td>Message</td> <td><textarea id="area1" cols="80" rows="6" onfocus="if(this.value==this.defaultValue)this.value='';" name="area1">Please type your message here</textarea> </td> <td><textarea readonly id="area2" cols="80" rows="6" hidden name="area2">Some text here</textarea> </td> The javascript code is then: <script> document.getElementById('subject').addEventListener('change', function () { if (this.value == 'Subject1') { document.getElementById('area1').style.display = 'none'; document.getElementById('area2').style.display = 'block' } else { document.getElementById('area1').style.display = 'block'; document.getElementById('area2').style.display = 'none' } }); </script> Any help would be greatly appreciated, thank you -
Enforce JOIN instead of Subquey when using "__in" filter in Django ORM
Task: I want to get all invoices where the project title matches a given string. The Invoice has a foreign key to Project. The problem: I want to use a function for doing the project search so I can recycle and encapsulate this use-caes. To make this happen I have to use the __in operator instead of project__title__icontains=my_str. This will lead to an inefficient subquery. The later will create an efficient JOIN. Code examples I have two custom queryset methods. One lives in Project: def search_title(self, title: str): """ Searches for projects having the given title or at least parts of it. """ return self.filter(title__icontains=title) The second one lives in Invoice: def search_project_title(self, project_title: str): return self.filter(project__in=Project.objects.search_title(project_title)) Any ideas how I can tell the Django ORM that I prefer JOINs over Subqueries? Thx! -
Django - paragraph <p> is not working with autoescape
It seems like <p> is somehow missinterpreted when using Django template with {% autoescape off %}. It doesn't matter, in which place I define <p> - before autoescape tag, after or even inside the content delivered to that section. All other tags (defined inside autoescaped content string) works perfectly, the problem is only with paragraph. But the result is that paragraph is empty: Of course I have tried also variant with defined after autoescape like this: but the result is always the same empty tag. I cannot see any reason why this is happening, I would appreciate any help. Thanks. -
Django Websocket: Messages are all sent after loop is finished
I am trying to create a application, where i start the game with a countdown. For that I have a loop counting down. The problem is when i am awaiting my send loop, all messsages are sent after the loop is finished. When i am putting the function in a task it is sending instant but thats not what i want because I need to wait for the function to call another after. Thats the the countdown function async def init_starting(self): if not self.lobby.status == "waiting": print("Already Started") return False else: print("Starting Countdown") self.lobby.status = 'starting' await self.save_lobby() await self.send_status_message_with_status(status='starting', data={'has_started': self.lobby.has_started, 'host': self.host.username, 'players': self.players, 'lobby_code': self.lobby_code, 'countdown': 3}) countdown = 3 while countdown >= 0: # here are the messages not sent instant but after the loop is finished (with my current approach they are sent instant but i cant await it countdown_data = { 'countdown': countdown } await self.send_status_message_with_status(status='starting', data=countdown_data) countdown -= 1 await asyncio.sleep(1) self.lobby.status = 'started' await self.save_lobby() await self.send_status_message_with_status(status='started', data={ 'message': "Test" }) return True Here i am currently starting the task if "command" in text_data_json: command = text_data_json['command'] match command: case 'start': loop = asyncio.get_running_loop() start_task1 = loop.create_task(self.init_starting()) # here i would like … -
JQuery with dataTransfer move multiple table datas to input fields
I have below table with 2 rows but can doubled with button (Add another Word media): <tbody> <tr class="form-row dynamic-medias" id="medias-0"> <td class="field-path_to_file"> <div id="medias-0-path_to_file_with_media_recorder"> <div class="py-2"> <input type="file" name="medias-0-path_to_file" class="bg-slate-100 p-2" id="id_medias-0-path_to_file"> </div> <p> Or record an audio </p> <div class="btn-group" role="group"> <button id="medias-0-path_to_file_record_start" type="button" class="px-2 py-1 text-white bg-green-500 disabled:bg-gray-500 rounded-sm" onclick="startRecording(this)"> Record </button> <button id="medias-0-path_to_file_record_stop" type="button" class="px-2 py-1 text-white bg-red-500 disabled:bg-gray-500 disabled:text-gray-200 rounded-sm" onclick="stopRecording(this)" disabled=""> Stop </button> </div> <div class="recording" id="medias-0-path_to_file-record-status"> <span class="text-sm"> Click the "Start Recording" button to start recording </span> </div> </div> <audio controls="" src="blob:http://localhost:8000/79977bf5-155b-4ca1-b5bc-097b8a55a80a"></audio><a download="Recorded-Media" href="blob:http://localhost:8000/79977bf5-155b-4ca1-b5bc-097b8a55a80a">Download it!</a> </td> </tr> <tr class="form-row dynamic-medias" id="medias-1"> <td class="field-path_to_file"> <div id="medias-1-path_to_file_with_media_recorder"> <div class="py-2"> <input type="file" name="medias-1-path_to_file" class="bg-slate-100 p-2" id="id_medias-1-path_to_file"> </div> <p> Or record an audio </p> <div class="btn-group" role="group"> <button id="medias-1-path_to_file_record_start" type="button" class="px-2 py-1 text-white bg-green-500 disabled:bg-gray-500 rounded-sm" onclick="startRecording(this)"> Record </button> <button id="medias-1-path_to_file_record_stop" type="button" class="px-2 py-1 text-white bg-red-500 disabled:bg-gray-500 disabled:text-gray-200 rounded-sm" onclick="stopRecording(this)" disabled=""> Stop </button> </div> <div class="recording" id="medias-1-path_to_file-record-status"> <span class="text-sm"> Click the "Start Recording" button to start recording </span> </div> </div> <audio controls="" src="blob:http://localhost:8000/cd165412-b186-4a11-8fd7-6997750b9bd3"></audio><a download="Recorded-Media" href="blob:http://localhost:8000/cd165412-b186-4a11-8fd7-6997750b9bd3">Download it!</a> </td> </tr> <tr class="add-row"> <td colspan="4"><a href="#">Add another Word media</a></td> </tr> </tbody> Below is JQuery code get the recorded audio from little player for each rows and move it to input … -
Can we have one model serializer for multiple models having the same fields? Django Rest Framework
I have 5 models with same fields inheriting from a base model. Now for all the five models I am having 5 serializers serializing all the fields for their respective models. An example of the setup is as below base model class BaseModel(models.Model): field 1 field 2 ** model 1** class Model1(BaseModel): field 3 = models.Charfield(choices=CHOICES) model 2 class Model 2(BaseModel) field 3 = models.Charfield(choices=CHOICES) So field3 is common in both the models but have different choices in them hence are placed in different models and not in the base model. serializer class SerialModel1(serializers.ModelSerializer): class Meta: model = Model1 fields = "__all__" class SerialModel2(serializers.ModelSerializer): class Meta: model = Model2 fields = "__all__" So as shown even when the models have the same fields I need to use to different model serializers. Question Can I have just one model serializer for both Model1 and Model2 ? If yes, please suggest me the way to do it. -
Get Request in django-plotly-dash
I am trying to pass args in get request to plotly app : but I cannot retrieve the information. my_webpage.html?value=1 views.py: def my_webpage(request): return render(request, 'home/my_webpage.html', {}) my_webpage.html : {% extends 'base.html' %} {% load static %} {% block content %} {% load plotly_dash %} <div class="{% plotly_class name='my_webpage' %} card" style="height: 100%; width: 100%"> {% plotly_app name='my_webpage' ratio=10 %} </div> {% endblock %} my_webpage.py : external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = DjangoDash('my_webpage', external_stylesheets=external_stylesheets ) app.layout = html.Div([ dcc.Location(id='url', refresh=False), html.Div(id='page-content'), ]) @app.callback(Output('page-content', 'children'), Input('url', 'search')) def display_page(params): print("model_view - display_page") parsed = urllib.parse.urlparse(params) parsed_dict = urllib.parse.parse_qs(parsed.query) print(parsed_dict) page_content = params for i in parsed_dict.keys(): page_content += f"{f} {parsed_dict[i]} \n" print(params) return page_content related links : https://github.com/GibbsConsulting/django-plotly-dash/issues/416 -
Displaying from models to a template page in django
I want to display the data of models to my template file but it just can't work it doesn't even show an error message, even when I pass a QuerySet of message objects as context to the render function. App Name is CD Here my code models.py from django.db import models # Create your models here. class Task(models.Model): text = models.CharField(max_length = 200) def __str__(self): return self.text views.py from django.shortcuts import render from .models import * # Create your views here. def index(requets): tasks = Task.objects.all() context = {'tasks': tasks} return render(requets, 'CD/home.html', context) my template home.html {% for task in tasks %} <h1>{{task.texts}}</h1> {% endfor %} -
Display bootstrap element in django-forms
I want to use an element of a bootstrap template in my django-form: It's html code looks like this: What approach should I take to load this element in my form using django? So far I have tried this: 1.- Define field: CHOICES = [('1', 'First'), ('2', 'Second')] selector = forms.ChoiceField( required=False, label= "Select software products", choices=CHOICES, widget = forms.TextInput( attrs= { 'class': 'choices', 'role': 'combobox', 'data-type': 'select-multiple' } ) ) 2.- Add to layout: self.helper.layout = Layout( Row(Div(Div('selector'), css_class='form-group')) ) The result is a regular input field: In other elements I just put the css class and it works perfectly but I can't figure out how to do it in more complex objects. Thank you in advance!! -
How to run multiple commands in python os.system?
I tried to run this command by os.system, this command should run a virtual environment first then, it will run the Django server: import os os.system(''' .\\match_pyinstaller\match_project\\venv\\Scripts\\activate python .\match_pyinstaller\match_project\manage.py runserver ''') what is happening is that the command runs with no error raised "Process finished with exit code 0" to ensure that the command works properly, I removed the first line that refers to Venv and tried to run the command again and it traced back by "No Module Name ...." which means that it works fine however, the server doesn't open so, why? -
How to edit help_text of a child in the parent class
I made a mixin (same as the parent class) for my brand model, and I want to get the class name of the children and replace it with help_text in the parent class. Is there any solution? class TitleSlugMixin(models.Model): title = models.CharField( _('title'), max_length=255, help_text=_(f'{self.__class__.__name__} title.') ) class Brand(TitleSlugMixin): ... -
Accessing index in Django template under a for loop
#views.py . . . detailedStatement = { 'selectedOption1' : '90 degrees', 'correctAnswer1' : '180 degrees', 'selectedOption2' : 'angle', 'correctAnswer2' : 'side' } #Above dictionary contains 200 elements diction = { 'detailedStatement' : detailedStatement } return render(request, "result.html", diction); So while on an html file I wanted to access the dictionary's every element via a loop. Like every element should be listed in the html table row like following. | Sr | Selected Option | Correct Answer | | 1 | 90 degrees | 180 degrees | | 2 | angle | side | Above table is just a representation of html table not an actual table. But the issue I am facing is... I am not able to access its index in a dynamic way. I wrote a for loop in Django html template but {% for dr in detailedResult.items %} <tr> <td>{{forloop.counter}}</td> <td>{{dr.option.forloop.counter}}</td> <td>{{dr.answer.forloop.counter}}</td> </tr> {% endfor %} I want my code to automatically put 1 after option and answer like option1, answer1; How can we do this? -
Django prefetch only latest object of related model
Consider the following models: class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): author = models.ForeignKey(Author, related_name="books", on_delete=models.CASCADE) title = models.CharField(max_length=100) created_at = models.DateTimeField(auto_now_add=True) And the following code: queryset = Author.objects.all() for author in queryset: print(author.name) print(author.books.latest("created_at").title) The above causes an N+1 query as expected. I tried fixing it by prefetching the books like so: queryset = Author.objects.prefetch_related('books') However, this does not resolve the N+1 issue. I think the reason is the prefetch does a SELECT * FROM book WHERE author_id IN (1,2,...) which is different from the query performed by the call to .latest(), i.e. SELECT * FROM book WHERE author_id = 1 ORDER BY created_at DESC LIMIT 1. The prefetch does an IN and .latest() does an =. I have also tried the following without success: queryset = Author.objects.prefetch_related(Prefetch('books', queryset=Book.objects.order_by("-created_at"))) What should the prefetch look like in order to avoid N+1 selects when using .latest()? -
Attribute remains after model object is deleted
When a customer adds a product item to the cart, the cart displays the items and cartItems and everything stays how it's supposed to but when someone deletes the actual product from the Product list, items gets deleted too how it's supposed to, but cartItems or the quantity of the products that was added remains after the product doesn't exist, I'm trying to delete that when the Product doesn't exit! The current code throws me this error, list indices must be integers or slices, not str Model class Order(models.Model): ... @property def get_cart_items(self): orderitems = self.orderitem_set.all() total = sum([item.quantity for item in orderitems]) return total class OrderItem(models.Model): product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True) order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True) quantity = models.IntegerField(default=0) Utils def cookieCart(request): try: cart = json.loads(request.COOKIES['cart']) except: cart = {} #cart prints out this structure '{"15":{"quantity":1}}' print('Cart:', cart) items = [] order = {'get_cart_total': 0, 'get_cart_items': 0, 'shipping': False} cartItems = order['get_cart_items'] for i in cart: try: cartItems += cart[i]["quantity"] product = Product.objects.get(id=i) total = (product.final_price * cart[i]["quantity"]) order['get_cart_total'] += total order['get_cart_items'] += cart[i]["quantity"] item = { 'product':{ 'id':product.id, 'name':product.name, 'final_price':product.final_price, 'image_URL':product.image_URL, 'availability':product.availability, }, 'quantity':cart[i]["quantity"], 'get_total':total, } items.append(item) except: pass # clear cartItems if Product does not … -
Is there a way of saving a PDF received as a string to pdf file using ContentFile?
A HttpResponse is providing me with a pdf as a string (according to the developer who set it up it's supposed to come as a "JSON byte array") but when I check the type in python it's a string. How do I save this as a pdf file using the "FileField" model field on a django model? The previous developer to work on this has written simply - file_object=ContentFile( azure_download["Attachment"], azure_download["OriginalFileName"] ), Where the "Attachment" key gives the pdf as a string and the "OriginalFileName" is a string. Is this correct? The reason I ask is when I attempt to view the pdf in the browser (which has been stored in AWS S3) the screen is blank - the console shows the reason is the pdf is corrupted. Does this point to a bad string coming from the api or is there something wrong with the code? -
Django link text too long
In my detail view in my Django app I show links to all attached files in the Post. Problem is, if link is too long it goes beyond border. Is it possible to show only part of link if it's too long or to limit the 'preview', not to edit the link. code: {% for i in post.file_set.all %}<p class="article-content mt-2 mb-1"><strong>Privitak prijave {{ forloop.counter }}: </strong><a href="{{i.file.url}}">{{i.file.name}}</a></p>{% endfor %} -
Sending the data saved in the database in the Django project to an e-mail address
First of all, I'm new to this and I want to do something like this. I want to filter the database records in my project that I created with Django and send them to an e-mail address in a certain format. I have no idea how to do this, can you help me with this? -
How can I transfer my request in the test for this service? [closed]
I need to create my own request, maybe mock. How can i do this? -
Web Sockets failing connection / Django Channels
The problem is, it Used to work.. And then i decided to change my frontend css framework, and then it stopped working. even though the code is the exact same. my asgi.py file from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application import apps.conversation.routing as conversation_routing import apps.twikkerprofile.routing as core_routing import apps.feed.routing as feed_routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'twikker.settings') application = ProtocolTypeRouter({ "http": get_asgi_application(), "websocket": AuthMiddlewareStack( URLRouter( conversation_routing.websocket_urlpatterns + core_routing.websocket_urlpatterns + feed_routing.websocket_urlpatterns ) ) }) My routing.py files all follow this pattern: from django.urls import path from apps.feed import consumers websocket_urlpatterns = [ path('ws/tweek/', consumers.TweekConsumer.as_asgi()), path('ws/like/', consumers.LikeConsumer.as_asgi()), ] The websockets declaration in the frontend: const tweekSocket = new WebSocket( 'ws://' + window.location.host + '/ws/' + 'tweek/' ); const likeSocket = new WebSocket( 'ws://' + window.location.host + '/ws/' + 'like/' ); And the errors I get in the console: Edit: When I start the server, this is what I get System check identified no issues (0 silenced). October 24, 2022 - 11:37:50 Django version 4.1.2, using settings 'twikker.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. But I guess it should be Starting ASGI/Channels, doesnt it? -
How to Django queryset annotate True when all BooleanField of related objects are True else False?
I have a model who looks like this : class Test(models.Model): user = models.ForeignKey('users.CustomUser', models.CASCADE) name = models.CharField(max_length=64) class TestVersion(models.Model): test = models.ForeignKey('Test', models.CASCADE) name = models.CharField(max_length=255) validation_1 = models.BooleanField(default=False, editable=False) validation_2 = models.BooleanField(default=False, editable=False) validation_3 = models.BooleanField(default=False, editable=False) validation_4 = models.BooleanField(default=False, editable=False) Sometimes i have like hundreds of TestVersion linked to a Test. And I want something like : user_test = Test.objects.filter( user=request.user ).annotate( number_of_test=Count('testversion', distinct=True), all_validation_1="True or False ?", # if all testversion_set.all() of the current test are True, return True else False. all_validation_2="True or False ?", # same all_validation_3="True or False ?", # same all_validation_4="True or False ?", # same ).distinct() # I Want for example : test_1 = user_test.first() test_1_validation_1 = test_1.testversion_set.all().count() test_1_validation_1_true = test_1.testversion_set.filter(validation_1=True).count() all_validation_1 = test_1_validation_1 == test_1_validation_true test_1.all_validation_1 == all_validation_1 # True # Or something like : test_1 = user_test.first() all_validation_1 = all(test_1.testversion_set.all().values_list('validation_1', flat=True)) test_1.all_validation_1 == all_validation_1 # True I have not been able to find what techniques were used to achieve this level of accuracy with related objects in annotate method. Any ideas ? Thank's -
Django dj-rest-auth does not set cookie despite JWT_AUTH_REFRESH_COOKIE
I have a simple Django app managing user autentication and registration with dj-rest-auth and JWT. Accorging to the docs, I have set the the app to use JWT with the plugin simple-jwt with settings.py: JWT_AUTH_COOKIE = 'my-app-auth' JWT_AUTH_REFRESH_COOKIE = 'my-refresh-token' Expected behaviour: Cookies should be set on /dj-rest-auth/login/ and /token/refresh Issue: Cookies are set correctly ONLY on /dj-rest-auth/login/, but not on /token/refresh. This issue is not something new, since it is supposed to be solved here and here. So, I also added the suggested middleware. Here my settings.py: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'dj_rest_auth.jwt_auth.JWTCookieAuthentication', ] } REST_USE_JWT = True JWT_AUTH_COOKIE = 'my-app-auth' JWT_AUTH_REFRESH_COOKIE = 'my-refresh-token' MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'auth_app.middleware.MoveJWTRefreshCookieIntoTheBody' ] and my urls.py: from django.contrib import admin from django.urls import path from django.conf.urls import include, url, re_path from auth_app import views # JWT CONF from rest_framework_simplejwt.views import ( TokenRefreshView, TokenVerifyView, ) from dj_rest_auth.registration.views import VerifyEmailView, RegisterView from dj_rest_auth.views import PasswordResetConfirmView from allauth.account.views import confirm_email urlpatterns = [ path('admin/', admin.site.urls), path('token/verify/', TokenVerifyView.as_view(), name='token_verify'), path('token/refresh/', TokenRefreshView().as_view(), name='token_refresh'), path('api/protected/', views.ProtectedView.as_view(), name='protected_view'), path('api/open/', views.OpenView.as_view(), name='open_view'), # dj-rest-auth common path('dj-rest-auth/', include('dj_rest_auth.urls')), # dj-rest-auth registration path('dj-rest-auth/registration/', include('dj_rest_auth.registration.urls')), path('dj-rest-auth/account-confirm-email/', VerifyEmailView.as_view(), name='account_email_verification_sent'), re_path(r'^account-confirm-email/(?P<key>[-:\w]+)/$', VerifyEmailView.as_view(), name='account_confirm_email'), path( 'rest-auth/password/reset/confirm/<slug:uidb64>/<slug:token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm' ), ] … -
Django. How to reduce the number of database hits?
Please tell me how can I reduce the number of requests, I will attach the code below: models.py class Post(models.Model): .... @property def views_count(self): return PostViews.objects.filter(post=self).count() class PostViews(models.Model): IPAddres= models.GenericIPAddressField(default="111.222.333") post = models.ForeignKey(Post, on_delete=models.CASCADE,related_name="post_views_count",) date = models.DateTimeField(auto_now_add=True) def __str__(self): return self.IPAddres views.py posts = Post.objects.filter(is_toplevel=True, status=Post.ACTIVE).select_related('author').prefetch_related('tags').select_related('category') html {% for post in posts %} .... {{ post.views_count }} {% endfor %} Due to the postview call, the number of hits increases by 10 sql... -
ModuleNotFoundError: No module named 'apotheekMijlbeek_main'
I try to deploy my first Django / Postgres app on Pythonanywhere. I activated the postgres on my account / configured the port / address etc but when I try to run the code I'm getting the ModuleNotFoundError: No module named 'apotheekMijlbeek_main'. In my opinion my structure is like apotheekMijlbeek/apotheekMijlbeek_main and in this folder I'm having the settings.py In the /var/www/stefrenneboog23_pythonanywhere_com_wsgi.py my code is like this : # +++++++++++ DJANGO +++++++++++ # To use your own Django app use code like this: import os import sys # assuming your Django settings file is at '/home/myusername/mysite/mysite/settings.py' path = '/home/stefrenneboog23/apotheekMijlbeek' if path not in sys.path: sys.path.insert(0, path) os.environ['DJANGO_SETTINGS_MODULE'] = 'apotheekMijlbeek_main.settings' ## Uncomment the lines below depending on your Django version ###### then, for Django >=1.5: from django.core.wsgi import get_wsgi_application application = get_wsgi_application() ###### or, for older Django <=1.4 #import django.core.handlers.wsgi #application = django.core.handlers.wsgi.WSGIHandler() Really have no idea what I can change more. Thanks a lot already for the review. KR -
Switch to another database in Django
I have a django project that was created on an Oracle database and I want to switch to ANOTHER Oracle database. I have followed this tutorial https://pythonfusion.com/switch-database-django/, but there is a problem that not all models are created initially in Django, some are created using inspectdb on existing tables in other databases . Therefore, when using the migrate --database=new command, I get errors about those tables that already existed before Django was created. Is there a way to migrate only the models and tables necessary for Django to work? (users, auth...)