Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
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 … -
django if value equals enum show field
For my django project I try to show a button if a field is equal to an enum value. I loop over lights and based on the state I want to show a button. My enum: class DeviceState(Enum): UNKNOWN = 1 STAND_BY = 2 ON = 3 OFF = 4 My light: class Light: def __init__(self, id, name, state: DeviceState = DeviceState.UNKNOWN): self.id = id self.name = name self.state: DeviceState = state My relevant template part: {% for light in lights %} <tr> <td>{{ light.name }}</td> <td>{{ light.state }}</td> <td> {% if light.state == 3 %} <button type="button" class="btn btn-dark">Lights off</button>< {% endif %} {% if light.state == "DeviceState.OFF" %} <button type="button" class="btn btn-success">Lights on</button> {% endif %} </td> </tr> {% endfor %} I tried multiple variations of: {% if light.state == 3 %} e.g. == "3" == DeviceState.OFF == 3 == "DeviceState.OFF" == "OFF" Of which none seem to work. How should I hide/show elements if a properties value equals a specific enum value? note ( i know I can use en elif instead of two else, but just for testing im trying to focus on getting one working. -
Django inline data save but i use for loop that way data overwrite save what to do?
Django inline data save overwrite MCX i tried to save multiple data. This is my main model (parent model) class DebitClient(SysFields): debit_client_id = models.CharField(max_length=50, primary_key=True, db_column='DEBIT_CLIENT_ID', verbose_name='Debit Client Id') from_date = models.DateField(db_column="FROM_DATE", verbose_name="From Date") i use here save method def save(self, force_insert=False, force_update=False): if not self.debit_client_id: formatted_date = self.from_date.strftime('%d%m%Y') self.debit_client_id = f'BB{formatted_date}' super(DebitClient, self).save(force_insert, force_update) from AtsERP.atserp_base.atserp_models.atserp_basemodels.atserp_accounting_models.basemodel_ledger.atserp_bm_client_ledger import \ ClientLedgerTransactionDetailed from AtsERP.atserp_base.atserp_models.atserp_basemodels.atserp_settings_models.basemodel_organization.ats_bm_organization import \ Organization from django.db.models.functions import Coalesce net_debit_client_date = ClientLedgerTransactionDetailed.objects.filter( fin_year=FinancialYear.objects.get(status='Active')).filter(ledger__ledger_id__in=[10795, "AC031", "A0001"]).values('trade_date').first() start_date = net_debit_client_date['trade_date'] print(start_date, "start date") start_obj_date_debit = \ ClientLedgerTransactionDetailed.objects.filter( Q(ledger__ledger_id__in=[10795, "AC031", "A0001"]) & (Q(trade_date__lte=self.from_date) | \ Q(trade_date__isnull=True)) & Q( fin_year=FinancialYear.objects.get(status='Active'))).aggregate( debit_sum=Coalesce(Sum('posted_debits'), 0) )['debit_sum'] start_obj_date_credit = ClientLedgerTransactionDetailed.objects.filter( Q(ledger__ledger_id__in=[ "AC031", "A0001", 10795]) & (Q(trade_date__lte=self.from_date) | \ Q(trade_date__isnull=True)) & Q( fin_year=FinancialYear.objects.get(status='Active'))).aggregate( credit_sum=Coalesce(Sum('posted_credits'), 0) )['credit_sum'] start_obj_date_debit_cd_nse = ClientLedgerTransactionDetailed.objects.filter( Q(ledger__ledger_id__in=[10795, "AC031", "A0001"]) & (Q(trade_date__lte=self.from_date) | \ Q(trade_date__isnull=True)) & Q( fin_year=FinancialYear.objects.get(status='Active')) & Q(org_unit='CD_NSE')).aggregate( debit_sum=Coalesce(Sum('posted_debits'), 0) )['debit_sum'] start_obj_date_credit_cd_nse = ClientLedgerTransactionDetailed.objects.filter( Q(ledger__ledger_id__in=[10795, "AC031", "A0001"]) & (Q(trade_date__lte=self.from_date) | \ Q(trade_date__isnull=True)) & Q( fin_year=FinancialYear.objects.get(status='Active'), org_unit='CD_NSE')).aggregate( credit_sum=Coalesce(Sum('posted_credits'), 0) )['credit_sum'] total_cd_nse = start_obj_date_credit_cd_nse - start_obj_date_debit_cd_nse if start_obj_date_debit_cd_nse is None: start_obj_date_debit_cd_nse = 0 print(start_obj_date_debit_cd_nse, "start_obj_date_debit_cd_nse") if start_obj_date_debit is None: start_obj_date_debit = 0 if start_obj_date_credit is None: start_obj_date_credit = 0 net_closing_balance = start_obj_date_credit - start_obj_date_debit print(start_obj_date_debit, "posted_debits") print(start_obj_date_credit, "posted_credits") print(net_closing_balance) target_date = self.from_date obj = ClientLedgerTransactionDetailed.objects.filter( Q(trade_date=target_date) | … -
upload multiple books to database automatically
I am working on a project that allows me to upload multiple books to database using django. For testing purposes and i order to save time, i want to automatically upload multiple books to database. Here is the code that helps me achieve that import random import string import httplib2 from urllib.parse import urlencode base_url = "http://localhost:8002/addbook/" def generate_data(): """ Generate a dictionary of random book data. """ data = {} data["title"] = "".join(random.choices(string.ascii_uppercase, k=8)) data["author_name"] = "".join(random.choices(string.ascii_uppercase, k=8)) data["coauthors_name"] = "".join( random.choices(string.ascii_uppercase, k=8)) data["publisher_name"] = "".join( random.choices(string.ascii_uppercase, k=8)) data["isbn"] = "".join(random.choices(string.digits, k=13)) data["genres_name"] = "".join(random.choices(string.ascii_uppercase, k=8)) data["edition"] = "".join(random.choices(string.ascii_uppercase, k=8)) data["description"] = "".join(random.choices(string.ascii_uppercase, k=50)) data["book_file"] = "/home/dubsy/A Guide to Broiler Chicken Growth Boosters & Probiotics.pdf" return data # Send a GET request to the book upload page to get the CSRF token http = httplib2.Http() response, content = http.request(base_url, "GET") csrf_token = response["set-cookie"].split("=")[1].split(";")[0] # Generate and send POST requests to upload 100 books for i in range(100): data = generate_data() data_encoded = urlencode(data).encode("utf-8") headers = { "Content-Type": "application/x-www-form-urlencoded", "Cookie": f"csrftoken={csrf_token}", "Referer": base_url, "X-CSRFToken": csrf_token, } response, content = http.request( base_url, "POST", body=data_encoded, headers=headers ) print(f"Response {i+1}: {response}") print(content.decode('utf-8')) When i run this above code in terminal, here are the … -
select_for_update doesn't prevent race conditions in PostgreSQL, while F expression does
I have a business model: from django.db import models from django.db.models import F from django.template.defaultfilters import slugify from rest_framework import status from rest_framework.response import Response from business.models.abstract import Entity from business.models.credit_history import CreditHistory class Business(Entity): title = models.CharField(max_length=160) slug = models.SlugField(max_length=120, unique=True) credit = models.PositiveBigIntegerField(default=0) def __str__(self): return f"{self.slug} - {self.title} - {self.credit}" def save(self, *args, **kwargs): if not self.id: self.slug = self.slug or slugify(self.title) return super().save(*args, **kwargs) def increase_credit(self, phone, amount): try: amount = int(amount) except ValueError: return Response({"message": "Amount must be a positive integer"}, status.HTTP_400_BAD_REQUEST) if amount <= 0: return Response({"message": "Amount must be a positive integer."}, status=status.HTTP_400_BAD_REQUEST) if amount > self.credit: return Response({"message": "Business doesn't have enough credit."}, status=status.HTTP_400_BAD_REQUEST) # self.credit = F("credit") - amount self.credit -= amount self.save() CreditHistory.objects.create( chargor=self.slug, chargee=phone, amount=amount, ) return Response({"message": "Successfully charged user."}, status.HTTP_200_OK) And then I wrote a test to check for race conditions: from django.test import TransactionTestCase from rest_framework.test import APIClient from business.models.business import Business from business.tests.increase_credit import IncreaseCredit import before_after class TestCreditHistory(TransactionTestCase): def setUp(self): self.client = APIClient() self.business1 = Business.objects.create( title="business 1", ) self.business2 = Business.objects.create( title="business 2", ) self.business3 = Business.objects.create( title="business 3", ) self.businesses = [self.business1, self.business2, self.business3] def test_total_charged_for_race_condition(self): obj = IncreaseCredit(1_000_000) def after_function(self, *args, … -
How create a model in Django with 3 default fields?
Please help me. I have the task of creating a model in Django with 3 default fields. The model looks simple enough: class TasksStatus(models.Model): status = models.CharField(max_length=255) You must initially add 3 statuses - new, in progress, and completed. So that when you create related models, you can choose from these 3 statuses. Can you tell me how to add 3 rows to the table at the time of model creation?