Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django form not updating files/images
I've build a form that works just fine for creating new objects. I can also update all the text fine. It does not let me update images. I am using Crispy Forms to build the form. Where did I make a mistake? My model looks like this: class Bottle(models.Model): class displaySorting(models.IntegerChoices): Lighthouse = 1 Regular = 2 name = models.CharField(max_length=255) category = models.ForeignKey(Category, on_delete=models.CASCADE) sorting = models.IntegerField(choices = displaySorting.choices,verbose_name='Sort order') brand = models.ForeignKey(Brand, on_delete=models.CASCADE) bottle_size = models.IntegerField(validators=[MaxValueValidator(9999)]) info = HTMLField() tasting_notes = HTMLField() abv = models.DecimalField(max_digits=3, decimal_places=1, verbose_name='Alcohol %') image = ResizedImageField(size=[1000,1000], upload_to=image_upload_handler) thumbnail = models.ImageField(upload_to='thumbnails') shop_link = models.URLField() consumer_shop_link = models.URLField() website_link = models.URLField() def save(self, *args, **kwargs): self.slug = slugify(f"{self.brand}-{self.name}") output_size = (300, 169) output_thumb = BytesIO() img = Image.open(self.image) img_name = self.image.name.split('.')[0] if img.height > 300 or img.width > 300: img.thumbnail(output_size) img.save(output_thumb,format='JPEG',quality=90) self.thumbnail = InMemoryUploadedFile(output_thumb, 'ImageField', f"{self.brand}-{img_name}_thumb.jpg", 'image/jpeg', sys.getsizeof(output_thumb), None) super(Bottle, self).save() My view looks like this: @login_required def bottle_update_view(request, id=None): object = get_object_or_404(Bottle, id=id) form = BottleForm(request.POST or None, instance=object) context = { 'form':form, 'object':object } if form.is_valid(): form.save() context['message'] = 'Data saved' return render(request,'Academy/bottle_crud.html',context) and finally my template like this: {% block content %} <div class='container'> <div class='row form'> <h1 class='text-center my-5'>Add & Update bottle</h1> … -
How to resolve django rest_framework error "Method \"POST\" not allowed."?
sorry I'm still a beginner on django I would like to create an enpoint with django rest_framework allowing me to create an HD wallet and backup in database, but I have an error: "Method "POST" not allowed ." So I created this model that represente hdwallet: from typing import Any from django.db import models, transaction from django.contrib.auth.models import User class HDWallet(models.Model): """HDWallet class""" date_created = models.DateTimeField(auto_now_add=True) date_updated = models.DateTimeField(auto_now=True) name: str = models.CharField(max_length=255, unique=True) private_key: str = models.CharField(max_length=100, unique=True) address: str = models.CharField(max_length=100, unique=True) user = models.ForeignKey( User, on_delete=models.CASCADE, related_name="wallet", ) active = models.BooleanField(default=True) def __str__(self) -> str: return self.name @transaction.atomic def disable(self) -> Any: if self.active is False: # Ne faisons rien si la wallet est déjà désactivée return self.active = False self.save() self.currencies.update(active=False) also I created my serializers class: class HDWalletSerializer(ModelSerializer): class Meta: model = HDWallet fields = "__all__" def post(self, request: Request) -> Any: user = User.objects.get(username=request["username"]) name = f"{user.username}_{user.id}" wallet = Wallet.create(name) if user is not None: hdwallet = HDWallet.objects.create( { "name": name, "private_key": wallet.get_key(), "address": wallet.get_key().address, "user": user.id, } ) else: raise Exception("use do not exist") return Response( { "status": 201, "message": "wallet have been successfully created!", "data": hdwallet, } ) and my view in … -
How to create a swagger hub service in django
I have a django project that contains multiple django microservices. Let's say that there are two services named "base" and "order" these two services have paths like this: in "base" microservice: from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView path('base/schema/', SpectacularAPIView.as_view(), name='schema'), path('base/swagger/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'), and in "order" microservice: from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView path('order/schema/', SpectacularAPIView.as_view(), name='schema'), path('order/swagger/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'), I want to create a new django microservice that collect all these documentations and put them in one url. how can I do this? -
ModuleNotFoundError: No module named 'core' in django
i installed latest version of django and created project and when i run server than this error occure may be its latest verion of django problem but how to solve this i try to find solution but not able to solve ModuleNotFoundError: No module named 'core' ModuleNotFoundError: No module named 'core' -
Django admin filter tabularInline field choices based on modelAdmin field
I am using this post to limit the choices in my related "tabularInline" field. class inlineUsages(admin.TabularInline): model = Usage extra = 0 def formfield_for_foreignkey(self, db_field, request=None, **kwargs): print(db_field.name) print(kwargs) if db_field.name == "project": kwargs["queryset"] = Project.objects.filter(task='Project 3') return super(inlineUsages, self).formfield_for_foreignkey(db_field, request, **kwargs) class fteAdmin(admin.ModelAdmin): inlines = (inlineUsages,) admin.site.register(FTE, fteAdmin) Both the FTE model and Usage model reference a foreign key "project" on the "Project" model. My filtering is correctly working, but currently (as you see in the code) I can only hard code the Project name (field is called "task"). I want to be able to filter the choices of my Usage project field based on the value of the FTE project field. I am not sure how to pass the relation between models. Any help is appreciated! Below is the current view in the django admin portal -
Advice sought on obsolete application in Django
We have a Django app without any content now (we have moved the models to another app), and the only thing left is the migrations I tried removing the migrations, however we have migrations in other apps that have dependancies on the app we wish to remove Is there any advice / guidance on removing apps in Django? -
How to deploy django app with channels and websocket on cpanel?
i have a django with websocket and channels wokring locally using daphne and i want to deploy it to cpanel ? I try to use : a2wsgi but it didn't work i want to know if cpanel works with asgi application? and if there is another way to deploy it with cpanel -
ModelChoiceField shows objects instead on contents
How can I change my code to show contents instead of objects ? forms.py: unit_set = AnalysisVariableUnit.objects.all() for unit in AnalysisVariableUnit.objects.all(): print(unit.__dict__) class AnalyysimuuttujaForm(forms.Form): technical_name = forms.CharField(required=False, widget=forms.TextInput( attrs={ 'class':'readonly_able tn' } )) decimals = forms.ChoiceField(choices=CHOICES_DS) decimals_format = forms.ChoiceField(choices=CHOICES_DS) units = forms.ModelChoiceField( required=False, widget=forms.Select, queryset=unit_set, ) this outputs: {'_state': <django.db.models.base.ModelState object at 0x7f2038ea51d0>, 'id': 1, 'contents': 'indeksipisteluku'} {'_state': <django.db.models.base.ModelState object at 0x7f2038ea5240>, 'id': 2, 'contents': '%'} I want to have 'indeksipisteluku' and '%' as selectables in my drop down, which now shows: -
Pytest and playwright - multilpe browsers when using class-scoped fixtures
I want to run a pytest playwright test with multiple browsers - e.g. pytest --browser firefox --browser webkit This works for function-based tests like this one: import pytest from playwright.sync_api import Page @pytest.mark.playwright def test_liveserver_with_playwright(page: Page, live_server): page.goto(f"{live_server.url}/") # etc. The test is executed twice, once per browser setting. However, I also want to use class-based tests, for which I use a fixture on a base class: import pytest import unittest from playwright.sync_api import Page @pytest.mark.playwright class PlaywrightTestBase(unittest.TestCase): @pytest.fixture(autouse=True) def playwright_liveserver_init(self, page: Page, live_server): self.page = page # etc. class FrontpageTest(PlaywrightTestBase): def test_one_thing(self): self.page.goto("...") # etc The test runs, but only once - the multiple browser settings are ignored. What am I missing - is there a way to get the multiple runs in such a setup as well ? -
SQL Query to combine alterative rows into a single table using Django's Models
I have created an attendance server that allows staffs to log their attendance. There is a manual and a automatic way of logging attendance. The SQL tables for the system is as follows. Staff Local User Device Biometrics Log Punch Log Id Id Id Id Id Name Name Location Local User ID Staff ID Device ID API Key Punched On Punched On Staff ID Is Disabled Anytime a biometrics log is added, if the local user in that log has a staff foreign key then a punch log gets created. I felt that this helps in combining automatic and manual logs. Manual Logs are added straight to Punch Log When the user is requesting for Attendance. This currently will take alterative rows of punch log that are active and combines it into a single row. Output Data Format Attendance Log Id Punch In Punch Out Staff ID CODE IN USE Currently I am using raw sql query to get the data The basic logic is to Split into two sub queries -> Punch In & Punch Out with Roll Number Unique to User Join with Roll Number select i.id, username, i.punched_on as punch_in, min(punch_out) as punch_out from (select *,row_number() over … -
Gunicorn is getting slow after project start or restart
I have deployed my django project on "Centos 7" OS with posgresql, nginx and gunicorn. After couple of minutes of project is running or restart, it's getting so slow. But there is no errors in the project or responses. It's for sure not db related issue. One thing to take into considiration that, my project gets quite big load gunicorn.service is given below: [Unit] Description=gunicorn daemon After=network.target [Service] User=user Group=nginx WorkingDirectory=/home/user/myproject ExecStart=/home/user/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/user/myproject/myproject.sock myproject.wsgi:application [Install] WantedBy=multi-user.target``` checked network, cpu load, db load. Everything is fine. No idea what is wrong -
Django: Why does my view writes 5 times to DB the last order?
I have a page with 5 forms and there is only 1 submit type button which is outside the selector in my template. When I click this button, it's the same as if I click the submit button 5 times for each form. So when I submit, I don't know why, but it writes to the DB 5 times the cleaned_data of the last form. Where is my issue? Thanks! My models.py: class Order(models.Model): date = models.DateField(unique=True, blank=True, null=True) first_course = models.CharField(null=True, blank=True, unique=False, max_length=30) first_course_quantity = models.IntegerField() second_course = models.CharField(null=True, blank=True, unique=False, max_length=30) second_course_quantity = models.IntegerField() dessert = models.CharField(null=True, blank=True, unique=False, max_length=30) dessert_quantity = models.IntegerField() drink = models.CharField(null=True, blank=True, unique=False, max_length=30) drink_quantity = models.IntegerField() def __str__(self): return f"Date of order: {self.date}" My forms.py: class DisabledOptionWidget(forms.Select): def render(self, name, value, attrs=None, renderer=None): html_code = super(DisabledOptionWidget, self).render(name, value, attrs, renderer) html_code = html_code.replace(f'<option value=""', f'<option value="" disabled') return html_code class OrderForm(forms.ModelForm): first_course = forms.ChoiceField(choices=[("", 'Select a dish')] + [(f"{item}", item) for item in list( Menu.objects.values_list("first_course", flat=True))], widget=DisabledOptionWidget, required=False) first_course_quantity = forms.IntegerField(min_value=0) second_course = forms.ChoiceField(choices=[("", 'Select a dish')] + [(f"{item}", item) for item in list( Menu.objects.values_list("second_course", flat=True))], widget=DisabledOptionWidget, required=False) second_course_quantity = forms.IntegerField(min_value=0) dessert = forms.ChoiceField(choices=[("", 'Select a dish')] + [(f"{item}", item) for … -
How can I resign Photo in Django Form
I am working a Django project where I want to reduce the image size to be less than 300kb and crop the images to be 1280px 820px. The aim is to make sure every image uploaded is the same irrespective of the initial so any best solution would be appreciated. Below is what I have tried but nothing works. ALLOWED_EXTENSIONS = ('.gif', '.jpg', '.jpeg') class PropertyForm(forms.ModelForm): description = forms.CharField(label='Property Description:', max_length=60, widget=forms.TextInput(attrs={'placeholder': 'Briefly Describe your Property. E.g. Bedroom & Palour with Private Detached Bathroom'})) state = forms.ChoiceField(choices=Property.STATE_CHOICES, required=False) state_lga = forms.CharField(label = 'Local Govt. Area:', max_length=12, widget=forms.TextInput(attrs={'placeholder': 'Enter Local Govt. of Property.'})) address = forms.CharField(label = 'Property Address:', max_length=60, widget=forms.TextInput(attrs={'placeholder': 'Enter Street Name with Number and Town Name only.'})) class Meta: model = Property fields = ('description', 'address', 'country', 'state', 'state_lga', 'property_type', 'bedrooms', 'bathroom_type', 'price', 'is_available', 'image') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['bedrooms'].required = False def clean_image(self): image = self.cleaned_data.get('image') if image: # Check if the image size exceeds 1MB if image.size > 1024 * 1024: # 1MB in bytes # Open the image using Pillow with Image.open(image) as img: # Reduce the image size while preserving the aspect ratio max_width = 1920 max_height = 820 img.thumbnail((max_width, max_height), Image.ANTIALIAS) … -
Gmail API OAuth redirect issue
I have website with the following code that works perfectly on my local machine, but on the remote server, it doesn't redirect to Google OAuth to create token.json and gives me a 502 error. Where could I have made a mistake? I just need to authenticate with OAuth to access my Gmail account and retrieve emails from it. Can't generate token.json. SCOPES = [ 'https://mail.google.com/', ] def get_gmail_service(): creds = None config_path = os.path.join(os.path.dirname(__file__), 'config') credentials_path = os.path.join(config_path, 'creds.json') token_path = os.path.join(config_path, 'token.json') if os.path.exists(token_path): creds = Credentials.from_authorized_user_file(token_path, SCOPES) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( credentials_path, SCOPES) creds = flow.run_local_server(port=0) with open(token_path, 'w') as token: token.write(creds.to_json()) try: service = build('gmail', 'v1', credentials=creds) return service except HttpError as error: print(f'An error occurred: {error}') def get_emails(): service = get_gmail_service() -
How can I load something from Django models in a HTML file without writing anything in views.py
I want to include the title and message from every notification in the model Notifications from models.py. I don't want to have to change every single views.py that I have to do this. I know that it's possible to put the tag {% request.user.name %} to get details from the user, but how can I do this with another random model? I have already tried some things. These are the files that I created/changed in an attempt to do this. (home is the name of my app) home/templatetags/__init__.py from .custom_tags import register home/templatetags/custom_tags.py from django import template from home.models import Notifications register = template.Library() @register.simple_tag def notifications(): data = Notifications.objects.all() return data home/templates/base.html {% load custom_tags %} <html> <head><!-- Some code here --></head> <body> <!-- Some more code here --> {% notifications %} {% for notification in notifications_list %} {{ notification.title }} {% endfor %} </body> In base.html, the line {% notifications %} shows <QuerySet [<Notifications: Notifications object (1)>]>. But all of the other lines don't do anything. Can anyone tell me what I'm doing wrong? -
Transform an array of objects and a simple array with python
I would like to ask for help on how to transform this arry result into a simple array of the type array=['a', 'b','c', ... 'aaa', 'aab' ...] that I want to be able to call the elements that are in the array only with indices ex: array[1] ='a'; arry[2]='b' and so on To help you understand what I want, see the result in this py file that I share here, try to run it on your machine and see the result it gives. from string import ascii_lowercase import itertools def iter_all_strings(): for size in itertools.count(1): for s in itertools.product(ascii_lowercase, repeat=size): yield "".join(s) lista=[] for s in itertools.islice(iter_all_strings(), 1000): lista.append(s) print (lista[-1:1000]) -
How to inherit template in django asyncronously
How can I inherit blocks eg.({% block title %}{% endblock title %}) in base.html without fully loading the entire page because my player always keeping stop wherever user try to do with other links. What's an ideal way to achieve this. I somehow able to load my entire html asynchronously but that didn't work. function ajax_load_page(this_a_tag, to_page) { event.preventDefault(); load_Page(this_a_tag, to_page); }; function load_Page(this_a_tag, to_page) { fetch(`${to_page}`) .then(response => response.text()) .then(data => { document.open(); document.write(data); document.close(); window.history.pushState({}, '', `${to_page}`); }) .catch(error => { console.log("An error occurred:", error); }); }; usage in my html <button class="nav-link active text-white w-100 text-start" onclick="ajax_load_page(this, '/')"> <i class="bi bi-house-heart me-2"></i> Home </button> thank you! -
In Django, how do I access request variable when validating password?
In Django I need to create a custom password validator which needs to read from the DB to fetch password policy configuration. To do this I need the client ID which is usually embedded in the request variable but in this case, request it is not available. Is there an alternative method to achieve this? class MinimumLengthValidator: """ Validate whether the password is of a minimum length. """ def __init__(self, min_length=8): self.min_length = min_length #get minimum length from client config here, typically request.client.config.password_min_length e.g. value is 10 -
Celery not picking up task from queue on ECS
I am using celery in my Django application together with rabbitmq to perform heavy long running tasks. I created ECS services on AWS and for celery worker service I enabled autoscaling. I created an alert on Cloudwatch to create new container when new message appears in queue. I chose message count VirtualHost celery queue because that's where all my messages are going to. The problem I am facing is that celery does not pick up the task from the queue even if new container in service is created. I checked rabbimq admin panel and I see new messages and I see that we containes are added but celery is not picking up them. I set up concurrency to 2 and 2 tasks are running properly but the next ones are starting only if any of these 2 tasks are completed. I tried to use --autoscale=15,2 option and I added -Q celery to specify the queue name. It is working but when I tried to run more than 15 tasks simultaneously I have the same problem so containers are created but tasks are not picked up from the queue. What I want to achieve is that new containers in a service … -
foregin key using name value fetch in django rest frame work
[![views.py][1]][1][![model.py][1]][1][![Model.pyfile][4]][4] i have add model.py ,view.py and serilializer.py file ,i will share country and state model . I wiil apply foregin key country and state fields. I will check in html fields in django rest framework in only object id fetch not value so like city(Morbi). -
Djangoe error: Reverse for 'detail' with arguments '('',)' not found. 1 pattern(s) tried: ['items/(?P<pk>[0-9]+)/\\Z']
Models.py: from django.contrib.auth.models import User from django.db import models class Category(models.Model): name = models.CharField(max_length=225) class Meta: verbose_name_plural = 'Categories' def __str__(self): return self.name class Item(models.Model): Category = models.ForeignKey(Category,related_name='items', on_delete=models.CASCADE ) name = models.CharField(max_length=225) description = models.TextField(blank=True, null=True) image = models.ImageField(upload_to='item_images', blank=True, null=True) created_by = models.ForeignKey(User, related_name='items', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name views.py: from django.shortcuts import render , get_object_or_404 from .models import Item def detail(request, pk): item = get_object_or_404(Item, pk=pk) return render(request, 'item/detail.html',{ 'item': item }) detail.html: {% extends 'core/base.html' %} {% block title %}{{ item.name }}{% endblock %} {% block content %} <div class="grid grid-cols-5 gap-6"> <div class="col-span-3"> <img src="{{ item.image.url }}" class="rounded-xl"> </div> </div> {% endblock %} index.html: {% extends 'core/base.html' %} {% block title %}Welcome{% endblock %} {% block content %} <div class="mt-6 px-6 py-12 bg-gray-100 rounded-xl"> <h2 class="mb-12 text-2xl text-center">Newest Oportunity</h2> <div class="grid grid-cols-3 gap-3"> {% for item in items %} <div> <a href="#"> <div> <img src="{{ item.image.url }}" class="rounded-t-xl"> </div> <div class="p-6 bg-white rounded-b-xl"> <h2 class="text-2xl">{{ item.name }}</h2> </div> </a> </div> {% endfor %} </div> </div> <div class="mt-6 px-6 py-12 bg-gray-100 rounded-xl"> <h2 class="mb-12 text-2xl text-center">Categories</h2> <div class="grid grid-cols-3 gap-3"> {% for category in categories %} <div> <a href="{% url 'item:detail' item.id %}"> … -
In Django, how can I create a database independent combobox that doesn't use it?
I'm new to Django. In my index.html page, I would like to insert a simple combobox that won't be connected to the database, but will be independent, for building miscellaneous code. What should I write in forms.py, view.py, models.py index.html and elsewhere? In forms.py i wrote: FAVORITE_COLORS_CHOICES = [ ("blue", "Blue"), ("green", "Green"), ("black", "Black"), ] class SimpleCombobox(forms.Form): favorite_colors = forms.MultipleChoiceField( required=False, widget=forms.CheckboxSelectMultiple, choices=FAVORITE_COLORS_CHOICES, ) -
import "adminsortable2.admin" could not be resolved
I am using python3.10.7 version of python and 4.1.1 version of django. I have installed Django Admin Sortable 2 in to my Django project. I have added 'adminsortable2', on INSTALLED_APPS of settings.py. when I used from adminsortable2.admin import SortableAdminMixin on admin.py the error import "adminsortable2.admin" could not be resolved is shown, how can I resolve this issue? -
multiple notifications from crontab in Django
I have a crontab in django/python, the code is given below. It is sending multiple notifications at the same time instead of sending single one. what is the problem? `def send_statistics(): today = date.today() yesterday = today - timedelta(days=1) try: if StatisticModel.objects.filter(date=yesterday).exists(): stat = StatisticModel.objects.get(date=yesterday) if not stat.is_send: text = "some text" send_message_telegram(text, SEND_STATISTIC_GROUP_ID) stat.is_send = True stat.save() time.sleep(100) else: StatisticModel.objects.create(is_send=True, date=yesterday) text = f"<b>*******HISOBOT*******</b>\n" \ send_message_telegram(text, SEND_STATISTIC_GROUP_ID) time.sleep(100) except: send_message_telegram def start(): scheduler = BackgroundScheduler({'apscheduler.timezone': 'Asia/Tashkent'}) scheduler.add_job(send_statistics, 'cron', hour=9) scheduler.start()` -
Trouble deploying Django application to AWS via Jenkins and Elastic Beanstalk
I have a Django application hosted on an EC2 instance that I deploy manually via eb deploy. This is my production instance, and works fine. The Ec2 instance is an Amazon Linux 2 Platform. I'm standing up a dev server using this tutorial. I wanted to include a Jenkins pipeline, so I am. I was able to deploy a barebones EB application to an Amazon Linux 2023 platform, but now I'm trying to deploy my own application. I think the change from Amazon Linux 2 to Amazon Linux 2023 might be a part of the issue. I'm pretty new to dev ops/infra and I'm trying my best to figure it out. The tutorial I'm following (as well as several other sources) made it seem that I need to use an Ubuntu EC2 instance. So Ubuntu as the OS w/ Amazon Linux 2023 as the platform (please correct me if my terminology is incorrect) My Jenkins builds are pushing to AWS for deployment, but they are failing. The intial errors complain about yum and amazon-linux-extras. Through some reaserch, I beleve that the amazon-linux-extras package is not requred on Amazon Linux 2023, but maybe that's not correct. Regardless, when I push with …