Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
django all auth file path installed locally?
I am trying to locate the location of django all auth package within my project. I installed it with an active virtual environment and ran a command to see the file path and its file path is /usr/local/lib/python3.11/site-packages/allauth/init.py. This looks like its installed locally. I tried installing with pip3 install django-allauth when virtual environment was active. Why isnt this installed within the lib folder in my virtual environment along with django? -
How to efficiently manage nested serializer in DRF?
This is my overrided get method inside APIView, that returns post's detail page: def get(self, request, *args, **kwargs): post_instance = self.get_object() comments = Comment.objects.detail().filter(post=post_instance, comment_to_reply=None)[:5] post_serializer = self.serializer_class(post_instance) comments_serializer = self.comment_serializer_class(comments, many=True) return Response({ 'post': post_serializer.data, 'comments': comments_serializer.data }) It creates only 13 queries in DB without duplicates, but I want to serialize comments inside PostSerializer without overriding it in APIView every time. detail() here is method inside custom manager that select_related and prefetch_related my query. This is the most important part of my PostSerializer: class PostSerializer(TaggitSerializer, serializers.ModelSerializer): author = LightUserSerializer(read_only=True) ... other fields def get_comments(self, instance): comments = Comment.objects.detail().filter(post=instance, comment_to_reply=None)[:5] comments_serializer = CommentSerializer(comments, many=True) return comments_serializer.data def to_representation(self, instance): representation = super().to_representation(instance) representation['comments'] = self.get_comments(instance) return representation It basically the same lines of code from APIView, but in serializer. I get comments inside get_comments function and include it inside Response object through to_representation. It works, but the problem is that this method creates 16 duplicating queries. 25 queries overall. If I use it like SerializerMethodField it works the same way. -
Backend Deveopment practice project
How can we create a project that can be used to store notes which can be textual, audio or video. Where the system can have many users who can share notes amongst them.Should create a backend project for pratacticing the fucntional REST apis. The database can be sqlite for testing the api functionality.The major functionality i need is to store the notes and query the stored notes. I have been trying to do build a project and need some ideas which will help me to prepare a better product -
Django CustomUser with OneToOne realtion has no USERNAME_FIELD when creating a new one
So I have a CustomUserModel and I'm using that to create my extended models models.py class User(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) is_active = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) USERNAME_FIELD = 'email' class Role(models.TextChoices): ADMIN = 'ADMIN', 'Admin', COMPANY = 'COMPANY', 'Company', STUDENT = 'STUDENT', 'Student' base_role = Role.ADMIN role = models.CharField(max_length=50, choices=Role.choices) objects = CustomUserManager() def save(self, *args, **kwargs): if not self.pk: self.role = self.base_role return super().save(*args, **kwargs) def __str__(self): return self.email class UserCompanyManager(BaseUserManager): def get_queryset(self, *args, **kwargs): results = super().get_queryset(*args, **kwargs) return results.filter(role=User.Role.COMPANY) class UserCompany(User): base_role = User.Role.COMPANY company = UserCompanyManager() class Meta: proxy = True class Company(models.Model): user = models.OneToOneField(UserCompany, on_delete=models.CASCADE) company_name = models.CharField(max_length=50, blank=True, null=True) def __str__(self): return self.company_name My form looks like this class CompanySignUpForm(UserCreationForm): company_name = forms.CharField(widget=forms.TextInput) password1 = forms.CharField(label="Password", widget=forms.PasswordInput) password2 = forms.CharField( label="Password confirmation", widget=forms.PasswordInput ) class Meta: model = UserCompany fields = ['email', 'company_name'] def clean_password2(self): # Check that the two password entries match password1 = self.cleaned_data.get("password1") password2 = self.cleaned_data.get("password2") if password1 and password2 and password1 != password2: raise ValidationError("Passwords don't match") return password2 @transaction.atomic def save(self, commit=True): # Save the provided password in hashed format user = super().save(commit=False) user.is_active = True user.set_password(self.cleaned_data["password1"]) print('User created! ', user) if commit: user.save() … -
Is it possible to extend or override Wagtail views?
I'm interested in adding some functionality to my wagtail blog to automatically post to social media when a post is published. Normally, the place to do this would be in the view. I did find an app on github called wagtail_share_social but it has not been updated in 2 years, and I would rather not be reliant on a third party solution. The Wagtail documentation has notes on extending views, but they seem to be limited to extending admin views, or views used in the dashboard rather than for serving up pages to non-logged in users. Is it possible to extend or override the Wagtail views for serving non admin pages? If not, what would be the correct approach to add functionality when a page is served via Wagtail? -
Im learning django on Youtube. However, I got the error that i dont know how to solve [closed]
On the terminal, when i type "python3 manage.py runserver", and it appears this /Library/Frameworks/Python.framework/Versions/3.11/Resources/Python.app/Contents/MacOS/Python: can't open file '/Users/daotronggiabao/Downloads/PyShop/manage.py': [Errno 2] No such file or directory here is a manage.py: #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" import os import sys def main(): """Run administrative tasks.""" os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pyshop.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) if name == "main": main() it supposes to show me the link of the web as the video shows. please someone help me, im desperately with this problem and have no clues why it happens. Thank you so much for your help -
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 …