Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django filter - filter a property of a model through a range of values
I have this model class Person(models.Model): name = models.CharField(max_length=150) date_birth = models.DateField() and this property to calculate years and months of birth @property def eta_annimesi(self): date2 = datetime.combine(self.date_birth , datetime.min.time()) now = datetime.now() duration = (now.year - date2.year) * 12 + now.month - date2.month years = duration // 12 months = duration % 12 if years > 0: if months > 0: msg_anni = years.__str__() + ' anni ' +months.__str__() +' mesi' else: msg_anni = years.__str__() + ' anni' else: if months > 0: msg_anni = months.__str__() +' mesi' else: msg_anni = 'Appena nato' return msg_anni I need to create filters on an html page that allow me to create a range between two integer values. (e.g. from 0 to 2 years) If it were possible even months but it's not important. I managed it by giving the possibility to enter the range of two dates but that's not what I need. Ideas and suggestions? Thanks in advance to anyone who wants to give me a hand. I need to create filters on an html page that allow me to create a range between two integer values. (e.g. from 0 to 2 years) If it were possible even months but … -
picking django template variable from rendered template to use in javascript
I am still new to django and struggling with this issue : I have a price slidebar in html that i picked up from a template. In html, the bar looks like this : <div class="price-range ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content" data-min="33"" <!-- to replace with :{{ price_max.product_price__max }}" --> data-max="15" ></div> <div class="range-slider"> <div class="price-input"> <p>Prix:</p> <input type="text" id="minamount" /> <input type="text" id="maxamount" /> </div> </div> </div> <a href="#">Filter</a> I upload price_max and also price_min correctly from the view as they can be directly displayed on the webpage as text. But the slidebar uses javascript to be rendered and picks up those data-min and data-max values to display the dynamic result like this : enter image description here the javascript: /*------------------- Range Slider --------------------- */ var rangeSlider = $(".price-range"), minamount = $("#minamount"), maxamount = $("#maxamount"), minPrice = rangeSlider.data('min'), maxPrice = rangeSlider.data('max'); rangeSlider.slider({ range: true, min: minPrice, max: maxPrice, values: [minPrice, maxPrice], slide: function (event, ui) { minamount.val( ui.values[0]+'€'); maxamount.val( ui.values[1]+'€'); } }); minamount.val( rangeSlider.slider("values", 0)+'€'); maxamount.val( rangeSlider.slider("values", 1)+'€'); replacing data-min and data-max by django templates variables doesn't work, i'm still unclear exactly why but i suppose it has to do with django rendering order. Another difficulty is that i … -
Trigger function when input field is changed programmatically
I have a slider which changes the value of the input fields named 'workload1' and 'workload2'. Having adjusted the slider, the form 'test-form1' should be submitted. (I do not have any submit button, and all my filtering option work with event listeners) After submitting the form, the page is reloaded, and the slider has to be set to the values the user has manually adjusted. So if someone moves the slider, the page is reloaded and the slider is at the same position as the person has moved it. In order to make this happen, I pass the 'workload_min' and 'workload_max' back to my template 'myfile.html'. Now the question is, how can I trigger the trigger the event listener when the slider is moved? I have tried with dispatchEvent(event), however, since the values are passed back to the template, the dispatchEvent(event) will be triggered again and again, in a endless reloading of the page. I have also tried with simple addEventListener('input', function ()) but the change of the input field, trough movement of the slider is not detected. Does someone know how to handle this problem? html: <input form="test-form1" type="text" name="workload1" id="workload1" readonly="readonly"> <input form="test-form1" type="text" name="workload2" id="workload2" readonly="readonly"> <div … -
How can I set this?
I am new to django. it is very important that django.contrib.staticfiles.finders.AppDirectoriesFinder be there in your STATICFILES_FINDERS. resource:https://django-admin-tools.readthedocs.io/en/latest/quickstart.html#installing-django-admin-tools Where are STATICFILES_FINDERS django.contrib.staticfiles.finders.AppDirectoriesFinder -
Django REST Framework - Weird Parameter Shape due to JSON Parser?
Currently I'm contacting my APIViews through AJAX requests on my frontend. config = { param1: 1, param2: 2, param3: 3 } $.ajax(APIEndpoints.renderConfig.url, { type: APIEndpoints.renderConfig.method, headers: { "X-CSRFToken": csrfToken }, data: { "config": config, "useWorkingConfig": true } } However, when I receive the data in my APIView, I get an object with the following shape: { "config[param1]": 1, "config[param2]": 2, "config[param3]": 3, "useWorkingConfig": true } According to different sources that I have checked, DRF does support nested JSON objects, so what am I missing? Is this something to do with the default behavior of the JSON Parser? It doesn't seem to be very useful, as you would basically need to preprocess the data before using your serializers (since they expect a nested structure). The same happens with lists, with your parameters being received as list_param[] instead of list_param. If its useful for anything, these are my DRF settings REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', 'EXCEPTION_HANDLER': 'django_project.api.exception_handler.custom_exception_handler', # Camel Case Package Settings 'DEFAULT_RENDERER_CLASSES': ( 'djangorestframework_camel_case.render.CamelCaseJSONRenderer', 'djangorestframework_camel_case.render.CamelCaseBrowsableAPIRenderer', ), 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'djangorestframework_camel_case.parser.CamelCaseFormParser', 'djangorestframework_camel_case.parser.CamelCaseMultiPartParser', 'djangorestframework_camel_case.parser.CamelCaseJSONParser', ], 'JSON_UNDERSCOREIZE': { 'no_underscore_before_number': True, }, } Its very probable that Im just missing something or its an intended behavior that Im not aware of. -
Modify the value of a model field during serialization
I have a system that is deployed on 7 servers, one of them we consider as the main server. For statistical reasons now I must synchronize the data. This presents a peculiarity, since one of the data of the model in the server has a value but in the other servers it is different. Example: clinic = 10 on the main server, but on the second server clinic = 34 I made an endpoint that will load the data from the other servers to the main server, for which I am getting the value of the clinic from an environment variable. I require that when serializing the data from the other servers, the clinic value is that of the environment variable and not that of the database. Main server models.py class MyModel(models.Model): clinic = models.IntegerField(verbose_name='Clinic', null=True, blank=True) profesional = models.CharField(max_length=12, blank=True, null=True, verbose_name='Profesional') user = models.ForeignKey(Users, verbose_name='User RCF', on_delete=models.PROTECT) creation_date = models.DateTimeField(auto_now_add=True, verbose_name='creation date') serializers.py class BaseSerializer(serializers.ModelSerializer): creation_date = serializers.DateTimeField() class Meta: extra_kwargs = { 'id': {'required': False} } class MyModelSerializer(AuditoriaBaseSerializer): class Meta(BaseSerializer.Meta): model = MyModel fields = '__all__' views.py class CreateManyMixin(CreateModelMixin): def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data, many=True) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) … -
Delete an object from a Many-to-Many relationship
How can I delete an object from a Many-to-Many relationship with fetch? how can I change it? I have a model for users which has many-to-many field users that presents the followers of the same user: (followers = models.ManyToManyField("User", related_name="follow")) I'm trying to create a button in the profile of a person that other people can click on, and unfollow or follow. I have an event listener on that button, and let's say, this is the unfollow button and I want to remove the requesting user, who is saved in the variable user, from the followers' list of the user whose profile belongs to him. And the followers' list I can get when I am doing a fetch, and then I am getting all the info of the person whose profile belongs to him (the post.user) that the requesting user, the log-in one, wants to unfollow. My purpose is to update the people who follow after the post.user, - remove the requesting user that wants to unfollow, but still saves all the other people who follow: element2.querySelector('button').addEventListener('click', function() { fetch(`users/${post.user}`, { method: 'PUT */ or DELETE ?*', body: JSON.stringify({ followers: ??? }) }) }) I just want to do with … -
In Django html page coding I'm unable to reach another html page when i give this:
<a href="http://localhost:1234/signin/"><input type="submit" onclick="logged()" value="LOGIN" style="border:none;width: 103%; height: 30px; font-weight: bold; background-color: #5aa0f0;"></a> And it shows no error. Why am I not able to go to another web page when I click on the button. -
Get how many fields are null or empty string in DJANGO model
I've the next model: class Iniciativa(models.Model): iniciativa = models.CharField(max_length=150) canal = models.ForeignKey(Canales, blank=True, null=True, on_delete=models.CASCADE) territorio = models.JSONField(default=list, blank=True, null=True) bigbet = models.ForeignKey(BigBet, blank=True, null=True, on_delete=models.CASCADE) objetivo = models.TextField(blank=True, null=True) call2action = models.TextField(blank=True, null=True) dialogo_valor = models.TextField(blank=True, null=True) cobertura = models.TextField(blank=True, null=True) kpi_medicion = models.TextField(blank=True, null=True) I made a command to pass the information from a file to the database, there is a field that carries the % of the filling progress, from the front I manage it with an event every time something changes but I don't know how to emulate that behavior from my command I thought if there is a simpler way other than manually checking each field to see the progress? -
Django: 'bool' object is not subscriptable when trying to get value from queryset
I am trying to get a value from a queryset, but i keep getting this error that says 'bool' object is not subscriptable. I have a queryset that looks like this tax_rate_fee = TaxRate.objects.filter(country=cartorder.country).exists() and i am checking to see if a specific country exists in the Queryset, then i want to grab a value from the queryset and perform some operation. This is my code tax_rate_fee = TaxRate.objects.filter(country=cartorder.country).exists() if tax_rate_fee: cartorderitem.vat = 5 * tax_rate_fee['rate'] this is the tax rate fee model class TaxRate(models.Model): country = models.CharField(max_length=200) rate = models.IntegerField(default=5, help_text="Numbers added here are in percentage (5 = 5%)") active = models.BooleanField(default=True) -
'dict' object has no attribute 'pk' error while using UpdateView in Django
I'm trying to use the UpdateView for editing a product (model), but it seems it doesn't identify my pk (id) parameter in the url. here's my setup in my views.py from django.views.generic import UpdateView class ProductDetail(UpdateView): model = Product form_class = ProductForm template_name="inventory/product-detail.html" success_url = "new-product/success" fields = "__all__" def get_queryset(self, **kwargs): id = int(kwargs.pk) product = Product.objects.get(pk=id) return product in my urls.py urlpatterns = [ path('<pk>/update/', views.ProductDetail.as_view(), name='product-detail'), ] here's the traceback log: Traceback (most recent call last): File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\core\handlers\exception.py", line 56, in inner response = get_response(request) File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\core\handlers\base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\views\generic\base.py", line 103, in view return self.dispatch(request, *args, **kwargs) File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\views\generic\base.py", line 142, in dispatch return handler(request, *args, **kwargs) File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\views\generic\edit.py", line 203, in get self.object = self.get_object() File "C:\Users\Dave\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\django\views\generic\detail.py", line 31, in get_object queryset = self.get_queryset() File "D:\pythonDjango\BHM Inventory System\inventory\views.py", line 45, in get_queryset id = int(kwargs.pk) Exception Type: AttributeError at /products/2001/update/ Exception Value: 'dict' object has no attribute 'pk' It seems on python views generic\edit.py it was able to read the 'pk' in the kwargs but not in my views that i have extended the UpdateView. as you can see on the ff. screenshot with the variables django … -
Django-Admin startproject command line not working
I updated my Python version to the latest version of 3.11.3 and updated my Django version to 4.2. When I try to make a new project the django-admin startproject command line doesn't work. I tried running my gitbash in admin and resetting my pc. -
Pyppeteer AsyncHTMLSession never returns Arender when ran on Ubuntu + Django + Celery in async
I have a scraping function that takes a URL and uses a AsyncHTMLSession to scrape generative content off websites - the sites I'm accessing are JS heavy so this is necessary. I've also added asynchronous debugging lines to the function that log to the database as this made checking the status of the code far easier. import pyppeteer import requests from celery import shared_task from requests_html import AsyncHTMLSession async def load_page_helper(url: str): # THE ASYNC PAGE LOADER set_state_async.delay("load_page_helper 1") session = AsyncHTMLSession() set_state_async.delay("load_page_helper 2") browser = await pyppeteer.launch({ 'ignoreHTTPSErrors': True, 'headless': True, 'handleSIGINT': False, 'handleSIGTERM': False, 'handleSIGHUP': False }) set_state_async.delay("load_page_helper 3") session._browser = browser resp = await session.get(url) set_state_async.delay("load_page_helper 4 - should time out by 100 seconds") await resp.html.arender(timeout=100) set_state_async.delay("load_page_helper 5") await session.close() set_state_async.delay("load_page_helper 6") return resp @shared_task def set_state_async(state): # FUNCTION FOR ASYNC DB LOGGING db.set_state(state) @shared_task def scrape_data_async(): # AN EXAMPLE OF HOW THE FUNCTION IS CALLED ASYNC (1/2) base_link = "example.com" scrape_data_async.delay() # AN EXAMPLE OF HOW THE FUNCTION IS CALLED ASYNC (2/2) I ran this code 3 times with a URL that is pingable using traceroute from my Ubuntu server. The resulting output to the DB is shown below: # TEST 1 2023-04-14 21:44:24.031933 - load_page_helper … -
What is the response from google calendar api channels?
I am trying to sync my django server with Google Calendar API, and I want to add an event in the calendar and receive it in my django server. My server looks like that: the code where i get my google credentials, according to my calendar, and create a channel that will access my endpoint from google.oauth2.credentials import Credentials from googleapiclient.discovery import build from googleapiclient.errors import HttpError creds = Credentials.from_authorized_user_info(user_credentials, SCOPES) service = build('calendar', 'v3', credentials=creds) # Defina a URL do webhook webhook_url = 'https://myserver.com/webhook/' # Defina os parâmetros da solicitação de watch watch_request = { 'id': str(uuid.uuid4()), 'type': 'web_hook', 'address': webhook_url } # Registre o webhook para o calendário do usuário try: calendar_id = 'primary' # ID do calendário do usuário watch_response = service.events().watch(calendarId=calendar_id, body=watch_request).execute() print(f'Webhook registrado com sucesso: {watch_response}') except HttpError as error: print(f'Erro ao registrar o webhook: {error}') urls.py from django.urls import path from . import views urlpatterns = [ path('webhook/', views.webhook_handler, name='webhook_handler'), ] something like my views.py from django.http import HttpResponseBadRequest, HttpResponse import json def webhook_handler(request): # Verifique se a solicitação é válida if request.method != 'POST': return HttpResponseBadRequest('Somente solicitações POST são aceitas') # Obtenha o corpo da solicitação print('request headers', request.headers) print('request type', request.content_type) print('request … -
Django login does not recognize the sent data
I need help. I'm building a web application with Django and React. I'm working on the registration and login functionality, and so far the registration works well and creates a user in the database. However, when I try to log in, it always returns a 401 error, even though the user is in the database. This is the Django code: from django.contrib.auth.hashers import check_password from django.db import models class Usuario_aplicacion(models.Model): username = models.CharField(max_length=100) password = models.CharField(max_length=100) email = models.EmailField() def __str__(self): return self.username def check_password(self, raw_password): return check_password(raw_password, self.password) views.py: import bcrypt from django.contrib.auth import authenticate, login from rest_framework.decorators import api_view from rest_framework.response import Response from django.views.decorators.csrf import csrf_exempt from .UsuarioSerializer import UsuarioSerializer from .models import Usuario_aplicacion @api_view(['POST']) @csrf_exempt def registro(request): serializer = UsuarioSerializer(data=request.data) if serializer.is_valid(): usuario = serializer.save() hashed_password = bcrypt.hashpw(usuario.password.encode('utf-8'), bcrypt.gensalt()) usuario.password = hashed_password.decode('utf-8') usuario.save() return Response({'message': 'User created'}, status=201) return Response(serializer.errors, status=400) @api_view(['POST']) @csrf_exempt def login_user(request): username = request.data.get('username') password = request.data.get('password') try: usuario = Usuario_aplicacion.objects.get(username=username) if usuario.check_password(password): user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return Response({'success': True}) except Usuario_aplicacion.DoesNotExist: pass return Response({'success': False}, status=401) UsuarioSerializer.py: from django.contrib.auth.hashers import make_password from rest_framework import serializers from users.models import Usuario_aplicacion class UsuarioSerializer(serializers.ModelSerializer): class Meta: … -
Gunicorn will only work as root user, else throws "ModuleNotFoundError"
Im working on a production server deployed on an AWS EC2 instance. The project is made with django, and its running on nginx + gunicorn After a few trials, I got everything working, however, when I added the --user nginx flag, the app stopped working. When run as a service, the service initialices properly, but then on any request it will throw an error 500. When run directly from command line, it does not even start. The command, which is the same on the gunicorn.service file as the one I run from cli is: /usr/local/bin/gunicorn --preload --user nginx --chdir /home/ec2-user/api/ project.wsgi:application --bind 0:8000 --workers=3 --timeout=120 --error-logfile /var/log/gunicorn/error.log --access-logfile /var/log/gunicorn/access.log --reload On either case, the stack traces as follows: [2023-04-14 20:35:19 +0000] [5429] [INFO] Worker exiting (pid: 5429) [2023-04-14 20:35:19 +0000] [5430] [INFO] Booting worker with pid: 5430 [2023-04-14 20:35:19 +0000] [5430] [ERROR] Exception in worker process Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker worker.init_process() File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process self.load_wsgi() File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi self.wsgi = self.app.wsgi() File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load return self.load_wsgiapp() File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp return util.import_app(self.app_uri) File … -
How to use assert in Python production source code?
We are looking at self-developed libraries shared between multiple Django projects or components of the same project, not the published open-source libraries. Question: We wonder whether it is OK to use assert to validate the variable's values. We didn't find online articles in this topic, so if yes, how do we do it? More information: An example of our idea: We are considering the example below that verifies the input logic equals to either and or or. And the design seems better than using a else clause assuming the value must be the other one. if logic == 'and': main_Q = main_Q & filter_Q elif logic == 'or': main_Q = main_Q | filter_Q else: assert False, "Invalid value of `logic`, it needs to be either `and` or `or`." Or: if logic == 'and': main_Q = main_Q & filter_Q else: assert logic == 'or' main_Q = main_Q | filter_Q We found usages of assert in the published open-source libraries. By doing a grep "assert" -v "test" to search in the site-packages directory, we found multiple assert statements in the functional source code, not for testing, in the libraries of amqp, argparse, billiard, celery, dateutil, decorator, distlib, etc. However, using assert seems … -
Accessing authorization header in django APIView
I have a Django APIView that requires authentication before the data can be fetched. The user token making the request is sent from a react front-end. The program works using a function view, but the returned data is formatted in a way I don't like. Something like [{"model":"product.product", "key":2, "fields":[{"name": "product one"} ... and so on]}] even including the model's name. For that reason, I reverted to using an APIView. Unfortunately, with APIView, it doesn't work at all, giving the error "Given token not valid for any token type". I'm convinced the problem is with the way I'm accessing the authorization header in the case of the APIView because if I remove the authorization part, the code works. That suggests to me that there must be a different way of accessing header information in APIView. May I ask: (1) If anyone has an idea of the right way to access the request header when using APIView. (2) The right response class to use in order to have a proper object like {id: 1, name:"product one", price: 100) etc returned in the case of a function view. By the way, I'm using the google firebase authentication mechanism. Below are the two … -
The endpoint is throwing me a KeyError when I try to update it
Pardon me, I'm developing an app using Django REST Framework and when I try to update an user this happen It throw me this error: centros = validated_data.pop('centros') KeyError: 'centros' I'll share my code: This is my model class Usuario(AbstractBaseUser): organizacion = models.CharField(verbose_name='Organización', blank=True, null=True, max_length=250) departamento = models.CharField(verbose_name='Departamento', blank=True, null=True, max_length=250) centros = models.ManyToManyField(Centro, verbose_name='Centro o Unidad', blank=True, related_name='centros_usuario') telefono = models.CharField(max_length=100, verbose_name='Teléfono', blank=True, null=True) rut = models.CharField(max_length=100, verbose_name='RUT', blank=True, null=True) profesion = models.CharField(max_length=150, verbose_name='Profesión', blank=True, null=True) cargo = models.CharField(max_length=150, verbose_name='Cargo', blank=True, null=True) nacionalidad = models.CharField(max_length=100, verbose_name='Nacionalidad', blank=True, null=True) sexo = models.CharField(max_length=10, choices=SEXO_CHOICES ,verbose_name='Sexo', blank=True, null=True) fecha_nacimiento = models.DateField(auto_now=False, auto_now_add=False,verbose_name='Fecha de nacimiento', blank=True, null=True) imagen_perfil = models.ImageField(upload_to='perfil/', verbose_name='Imágen de Perfil', max_length=255, blank=True, null=True) cv = models.FileField(verbose_name='CV', upload_to='cv_usuarios/', blank=True, null=True) direccion = models.CharField(max_length=250, blank=True, null=True, verbose_name='Dirección') perfil = models.PositiveSmallIntegerField( null=False, blank=False, default=2, choices=PERFIL_CHOICES, verbose_name='Perfil') is_active = models.BooleanField( verbose_name='active', default=True, help_text=( 'Designates whether this user shoud be treated as active. ' 'Unselect this instead of deleting accounts. ' ) ) estado = models.CharField(verbose_name='Estado usuario', default='INHABILITADO', choices=ESTADO_CHOICES, max_length=13) is_staff = models.BooleanField( verbose_name='staff status', default=False, help_text=( 'Designates whether the user can log into this admin site. ' ) ) is_superuser = models.BooleanField( verbose_name='superuser status', default=False, help_text=( 'Designates whether this user is a Superuser. … -
Django render() got an unexpected keyword argument 'renderer' - 2.1 issue
I updated my django version from 2.0 to 2.1 and keep getting this type error, from previous questions i know i need to add the renderer=None argument but I've tried it and there still seem to be issues. So my question is do i need to add renderer=None to the super call in my render function as well? For e.g. I have: class AdminThumbnailWidget(forms.ClearableFileInput): template_with_initial = '%(initial)s %(clear_template)s%(input_text)s: %(input)s' url_markup_template = '<a href="%(image_url)s" target="_blank"><img src="%(thumbnail_url)s"/></a>' template_with_clear = '<p class="image-input-clear">%(clear)s<label for="%(clear_checkbox_id)s">%(clear_checkbox_label)s</label></p>' def __init__(self, *args, **kwargs): self.thumbnail_width = kwargs.pop("thumbnail_width", 200) self.thumbnail_height = kwargs.pop("thumbnail_height", 200) super(AdminThumbnailWidget, self).__init__(*args, **kwargs) def render(self, name, value, attrs=None, renderer=None): substitutions = { 'initial_text': self.initial_text, 'input_text': self.input_text, 'clear_template': '', 'clear_checkbox_label': self.clear_checkbox_label, } template = '%(input)s' substitutions['input'] = super(FileInput, self).render(name, value, attrs) if value and hasattr(value, "url"): template = self.template_with_initial thumbnail_url = get_thumbnail(value, self.thumbnail_width, self.thumbnail_height, proc="crop", upscale=1, quality=95) url_data = { "image_url": value.url, "thumbnail_url": thumbnail_url } substitutions['initial'] = self.url_markup_template % url_data if not self.is_required: checkbox_name = self.clear_checkbox_name(name) checkbox_id = self.clear_checkbox_id(checkbox_name) substitutions['clear_checkbox_name'] = conditional_escape(checkbox_name) substitutions['clear_checkbox_id'] = conditional_escape(checkbox_id) substitutions['clear'] = CheckboxInput().render(checkbox_name, False,attrs={'id': checkbox_id}) substitutions['clear_template'] = self.template_with_clear % substitutions return mark_safe(template % substitutions) -
Django formset only saving initial formset. JS not updating values when adding new formsets
As the title says, whenever I fill out a form and then fill out the formset, if I add more than the initial formset, nothing is saved but the form and the initial formset. When I inspect the <td> elements while I select the add-empty-travel-form plus-circle button, the values of the <td>'s are not being incremented. I'll show the code to hopefully paint the picture. MODELS - Itinerary points to TravelRequest class TravelRequest(models.Model): name = models.CharField(max_length=255, blank=False) docs = models.BooleanField(blank=True, null=False) instructions = models.TextField(max_length = 2000, blank=True, null=True) date_created = models.DateTimeField("Date created",auto_now_add=True) date_updated = models.DateTimeField("Date updated",auto_now_add=True) created_by = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True) class TravelFile(models.Model): travel = models.ForeignKey(TravelRequest, on_delete=models.CASCADE) file = models.FileField( upload_to='documents/travel', blank=True, null=True) @property def file_name(self): url = self.file.url file_name = str(url).replace("/media/documents/travel/", "") return file_name def __str__(self): return self.file.url class Itinerary(models.Model): air = models.BooleanField(default=False, blank=True) car = models.BooleanField(default=False, blank=True) hotel = models.BooleanField(default=False, blank=True) dp= models.CharField(max_length=255, blank=False) dst = models.CharField(max_length=255, blank=False) doa = models.DateTimeField() dod = models.DateTimeField() travel_req = models.ForeignKey(TravelRequest, blank=True, null=True, on_delete=models.SET_NULL, related_name='travel_req') VIEWS - all the necessary imports are included def travel_request_create(request): form = TravelRequestForm(data=request.POST or None, files=request.FILES or None) ItineraryFormSet = formset_factory(ItineraryForm, extra=1) travel_formset = ItineraryFormSet(data=request.POST or None, prefix='travel') if request.method == 'POST': if 'travel-TOTAL_FORMS' in request.POST: … -
Django manage.py ModuleNotFoundError with Pants
First time poster, so let me know if I need to provide more info! I have a Django project of the following structure: a/b/c/d/ ├── e │ ├── BUILD.pants │ ├── myapp │ │ ├── BUILD.pants │ │ ├── migrations │ │ ├── models.py │ │ ├── ... │ │ └── tests │ ├── BUILD.pants │ ├── settings.py │ ├── ... │ └── wsgi.py ├── BUILD.pants ├── ... └── manage.py The Django app can be run using manage.py runserver perfectly fine, but it uses relative and app-level imports which causes Pants and Pyright issues within my repo. I want to set it up on Pants anyways, so I have switched all my relative imports to absolute imports (which breaks it running via Django directly). This is my BUILD.pants at a/b/c/d: python_sources() pex_binary( name="manage", entry_point="manage.py", dependencies=["a/b/c/d/e"], restartable=True, ) Running manage.py through Pants, instead of starting the app, produces the following: ./pants run a/b/c/d:manage -- runserver --noreload Traceback (most recent call last): File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/lib/python3.8/runpy.py", line 87, in _run_code exec(code, run_globals) File "/home/artificialask/.pex/unzipped_pexes/900cb0387e270fc2eadde5a3883453a34b9a796e/__main__.py", line 103, in <module> bootstrap_pex(__entry_point__, execute=__execute__, venv_dir=__venv_dir__) File "/home/artificialask/.pex/unzipped_pexes/900cb0387e270fc2eadde5a3883453a34b9a796e/.bootstrap/pex/pex_bootstrapper.py", line 599, in bootstrap_pex pex.PEX(entry_point).execute() File "/home/artificialask/.pex/unzipped_pexes/900cb0387e270fc2eadde5a3883453a34b9a796e/.bootstrap/pex/pex.py", line 551, in execute … -
Multiply table td's by amount in input with ability to keep using the original value
I have a drinks recipe tool I'm making in Django. I would like the ability to calculate the needed ingredients per serve. For this I have made an input that allows for numbers. I now want to multiply the ingredient amounts with the selected amount of servings. Can I store the original value somehow and alway use that? What would be a good way to approach this? My html looks like this: <table class='cocktail_ingredients my-5'> <tr> <th> <h2> INGREDIENTS </h2> </th> <th> <h2> ML </h2> </th> </tr> {% for ingredient in drink.get_ingredients %} <tr> <td> {% if ingredient.ingredient_rum %} {{ingredient.ingredient_rum}} {% else %} {{ingredient.ingredient_name}} {% endif %}</td> <td id='amount'> {{ingredient.ingredient_amount}}</td> </tr> {% endfor %} </table> The JS & JQuery i wrote looks like this. I have no experience with JQuery so far so I hope it makes sense what I've done so far. $(document).ready(function() { var serveAmount = document.getElementById('serves'); serveAmount.addEventListener('keyup', function() { if (!$('#serves').val()) { return false; } else { $('.amount').each( function() { var amount = parseInt($(this).text()); var serves = $('#serves').val(); new_amount = amount * serves $(this).text($(this).text().replace($(this).text(), new_amount)) }); }; }); }); edit: rendered HTML: <table class='cocktail_ingredients my-5'> <tr> <th> <h2> INGREDIENTS </h2> </th> <th> <h2> ML </h2> </th> </tr> … -
how to show selected popup in django template
I've Created one table with datatables and used django template for getting data. At the last column of table I've added information icon and added popover on hover. I'm getting the different data in console. because the popover content div(id=showContent) I've created in HTML. Here is HTML Code: <div class="col-md-12 grid-margin"> <div class="card"> <div class="card-body"> <div class="table-responsive"> <table class="table dataTable" id="fuelData"> <thead class="thead-light"> <tr> <th>OPCO</th> <th>Country</th> <th>Region</th> <th>Currency</th> <th>Business Segment</th> <th>UOM</th> </tr> </thead> <tbody> {% for d in UOM%} {% for i in d%} <tr> <td> {{i.opco_name}}</td> <td> {{i.region_id__name}}</td> <td> {{i.region_id__country__name}}</td> <td> {{i.currency_id__name}}</td> <td> {{i.business_segment__name}}</td> <td><i class="fa fa-info-circle" data-toggle="popover"></i> <div id="showContent" style="display: none;" hidden><b>Fuel Unit: </b>{{i.fuel_unit}}, <br/> Weight Unit: {{i.weight_unit}},<br/> Volume Unit: {{i.volume_unit}},<br/> Distance Unit: {{i.distance_unit}}</div> </td> </tr> {% endfor %} {% endfor %} </tbody> </table> </div> </div> </div> </div> And I am Showing that div in popover content by javascript. Here is Javascript Code: $(document).ready(function(){ $('[data-toggle="popover"]').popover( { trigger: "hover" , placement: 'top', title: 'Unit Of Measurements', content: $("#showContent").show(), } ); }); but its showing only first row popover data in all rows popover. I want to show different data on every popover. How can I show the particular row data on the icon hover? Thanks In Advance!! -
Heroku dynos H12, all requests timing out
Dynos completely fail (timeouts) every other day Hi all, I've been having this issue with Heroku for months now. I have a python/django app, using the 2X dynos (2 of them). I have 8 workers per dyno Every other day, there will be a huge spike in the response times and it will last for 30 mins to a few hours. All web requests will fail (503s) and Heroku will just tell me its an H12 (request timeout). On normal times, my p95 for requests are under a second and theres no spikes. Heres what I've tried: Autoscaling dynos with Judoscale Provisioning a new/faster database Finding out what queries are slow and optimizing them Restarting dynos when this happens Nothing seems to work. Most of the time it just goes away after a while, other times i have to shut the entire app down for a while and restart it. I havent noticed any change in traffic to the website either. The number of users stays consistent every day. On times where there is a spike of user activity, the dynos are actually fine. I have tried everything on my side and I'm starting to suspect this is a heroku-specific …