Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Signals django not working on ubuntu server
I have a site on the server where I work with signals.py The problem is that when I add a db file through the admin panel signals.py does not work EXACTLY ON THE SERVER on my computer everything works fine But there is another model involving signals.py and it works great models.py The model that works class History(models.Model): tg_id = models.BigIntegerField(verbose_name='Telegram ID') amount = models.FloatField(verbose_name='Кол-во') date = models.DateTimeField(verbose_name='Дата транзакции') Problem model class database_sqlite3(models.Model): file = models.FileField(verbose_name='Файл', upload_to='db_file/', help_text='Вы можете добавить сюда базу пользователей') app.py from django.apps import AppConfig class MainConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'main' verbose_name = "Бот" def ready(self): import main.signals signals.py The model that works @receiver(post_save, sender=History) def create_profile(sender, instance, created, **kwargs): if created: obj = User.objects.get(tg_id=int(instance.tg_id)) wallet = obj.wallet if wallet == None: wallet = 0 else: pass User.objects.filter(tg_id=instance.tg_id).update(wallet=wallet + instance.amount)0 Problem model @receiver(post_save, sender=database_sqlite3) def create_profile(sender, instance, created, **kwargs): if created: env = Env() env.read_env() gre = psycopg2.connect( database=env.str('POSTGRES_DB'), user=env.str('POSTGRES_USER'), password=env.str('POSTGRES_PASSWORD'), host=env.str('POSTGRES_HOST'), port=env.str('POSTGRES_PORT') ) cur_gre = gre.cursor() conn = sqlite3.connect(str(instance.file)) cursor = conn.cursor() table_names = cursor.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall() table_name = [] for i in table_names: table_name.append(i[0]) if 'main_admin_bot' in table_name: cursore = conn.execute(f"SELECT * FROM main_admin_bot").fetchall() for i in cursore: try: sql … -
Make longer access tokens with django_oauth_toolkit
I have setup the OAuth 2.0 authentication in a Django Rest Framework project with the django_oauth_toolkit library. But I have noticed access_token length is quite short. How can I make these tokens larger? I mean, increase the number of characters each token has. I have been searching for a setting to do this, but I haven't found anything. I have read all the avaiable settings in the OAUTH2_PROVIDER setting, but I have found nothing. -
heroku H10 issue
I get the Error: at=error code=H10 desc="App crashed" method=GET path="/" host=quiz-iu.herokuapp.com request_id=9ee6412c-b248-4eeb-8eba-066f07b38a4f fwd="93.201.118.59" dyno= connect= service= status=503 bytes= protocol=https 2022-12-19T17:47:36.743985+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=quiz-iu.herokuapp.com request_id=071363bb-8ce2-4eed-bdc5-93cd3b39581f fwd="93.201.118.59" dyno= connect= service= status=503 bytes= protocol=https And if i set into the consul : heroku run rails console I get: bash: line 1: rails: command not found Can please someone help to fix this issue I try to devolope a app but get the a error -
Restrict access of static files to permission groups
i am fairly new to web-development and i can't really find the best way to handle serving files with django. My situation is: I have users from different departments that can upload, edit and download files. Users should have access to files from other users of the same department, but not of the others. The way it works until now is: each filepath is written in a database, with a reference to which department it belongs. If requesting a file django checks if the department of the user is the same as the file, and denies the access if that not the case. After researching a bit it seemed that serving files that way isnt the standard way, and i should serve them as static files (from the webserver, not directly by django). My question is: can i still restrict the access of static files, or can anyone read them? -
Django: save() prohibited to prevent data loss due to unsaved related object 'predictions'
I am a creating a Django project, where i am using inline_formset to add multiple forms from the frontend (Just like the backend). I am trying create a new object now from the frontend, the main models get saved but the the model that is a foreignKey to the main model is not saving (Inline Model). I am getting the error message: save() prohibited to prevent data loss due to unsaved related object 'predictions'. Here is my CreateView Code. views.py class ProductInline(): form_class = PredictionForm model = Predictions template_name = "core/create/create_bet.html" def form_valid(self, form): named_formsets = self.get_named_formsets() if not all((x.is_valid() for x in named_formsets.values())): return self.render_to_response(self.get_context_data(form=form)) # self.object = form.save() new_form = form.save(commit=False) new_form.user = self.request.user new_form.save() # for every formset, attempt to find a specific formset save function # otherwise, just save. for name, formset in named_formsets.items(): formset_save_func = getattr(self, 'formset_{0}_valid'.format(name), None) if formset_save_func is not None: formset_save_func(formset) else: formset.save() return redirect('core:dashboard') def formset_variants_valid(self, formset): """ Hook for custom formset saving.. useful if you have multiple formsets """ variants = formset.save(commit=False) # self.save_formset(formset, contact) # add this, if you have can_delete=True parameter set in inlineformset_factory func for obj in formset.deleted_objects: obj.delete() for variant in variants: variant.product = self.object variant.save() … -
How can I determine the order of files/sub-folders within user-generated folders in Django?
I am building a Django web app where users can upload files into a folder structure that they also create/control. I know how to facilitate uploading of files and understand the solution proposed in this question about how to "assign" files (or sub-folders) to their parent folders, without having to create actual folders in the underlying file storage. However, in my web-app I would also like to allow users to determine the order of files and sub-folders within each folder without relying on the actual filenames. I know I can set the order of the returned one-to-many model instances by setting the index variable in a meta class (see this question). In my case I could thus insert an "order" field into the file/folder models and then set this value appropriately for each file/sub-folder in a given parent folder. However, this would mean that when a user moves a file from the bottom to the top of the parent folder, for example, every single one of the parent folder's file/sub-folder model instances would need to be edited to reflect their new position in the folder. Maybe my lack of coding experience is misleading me, but this setup looks to me … -
Why do people code flutter apps with dart instead of flet for mobile applications?
Multiple sources encouraged developers to learn dart language so that users can develop flutter apps for both iOS and android platforms. However, I can hardly find sources that say flet language can achieve the same results. For one thing, I think I am somehow fluent in python. If I code in flet language on flutter, I would've skipped few weeks to learn dart just so I can code a mobile app. Coding the app in python would make the code language consistent across both front-end and back-end (django) but I am afraid that would I be missing out on something by not learning to code in dart. What are the implications for me to develop a mobile app for both iOS and android platforms if I coded my app in flet instead of dart with flutter? -
Using Model Manager on queryset
In my admin panel i want to do some functions from my ModelManager. I have admin.py def change_status(modeladmin,request,queryset): status = queryset.change_value() return status model.py class ItemManager(models.Manager): @classmethod def change_value(cls): list = Item.objects.filter(value=5) list.update(value=6) return list.list_values("id", flat=True) class Item(models.Model): name = models.TextField() value = models.FloatField() objects = ItemManager() But i get QuerySet object has no attribute 'change_value'. But queryset is Item Queryset so why i cant use manager methods on it? -
What is the easy way to validate scheduling data in python
Well everyone. Honestly my head is about to explode on this situation. My whole day spent on this thing to solve it but i could not do that, so finally here i am on stackoverflow and asking for help from some of you experts. who can help me out in solving this problem. Well i have json object that contain the scheduling of a single day. and let me explain each part of this so you guys understand where i'm struggling so far. { "timings":{ "id":43, "partition":7, "day_name":"Tuesday", "full_day":false, "close_day":false, "start_time":"2022-12-20 00:00:00", "close_time":"2022-12-20 23:00:00" }, "pricings":[ { "partition":7, "day_name":"Tuesday", "peak_hours":true, "start_time":"2022-12-20 17:00:00", "close_time":"2022-12-20 23:00:00", "price":"1300" }, { "partition":7, "day_name":"Tuesday", "peak_hours":true, "start_time":"2022-12-20 00:00:00", "close_time":"2022-12-20 04:00:00", "price":"1300" }, { "id":54, "partition":7, "day_name":"Tuesday", "peak_hours":false, "start_time":"2022-12-20 04:00:00", "close_time":"2022-12-20 17:00:00", "price":2000 } ] } as you can see the first key is timings. Which contains the detail of shop when it will open and when it'll close. simple and nice. then we move on second key which is pricings. its a list of objects that contains that is it a peak hour or off_peak_hours or when they start and when they end. Now problem arise here : How can we validate all timing values such … -
How do I turn off CSRF checks with Django auth's PasswordResetView?
I'm using Django 3.1 with Django's auth application. I have the following middleware defined MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'directory.middleware.extend_token_response.ExtendTokenResponse' ] I would like to use Django auth's reset password functionality so I added this in my urls.py view path('reset_password', views.ResetPasswordView.as_view(), name='password_reset'), and in my views.py file I have defined from django.views.decorators.csrf import csrf_exempt ... class ResetPasswordView(SuccessMessageMixin, PasswordResetView): template_name = 'users/password_reset.html' email_template_name = 'users/password_reset_email.html' subject_template_name = 'users/password_reset_subject' success_message = "We've emailed you instructions for setting your password, " \ "if an account exists with the email you entered. You should receive them shortly." \ " If you don't receive an email, " \ "please make sure you've entered the address you registered with, and check your spam folder." success_url = reverse_lazy('users-home') @csrf_exempt def post(self, request, *args, **kwargs): email = request.data.get('email') try: if User.objects.get(email=email).active: print("email: %s " % email) return super(ResetPasswordView, self).post(request, *args, **kwargs) except: # this for if the email is not in the db of the system return super(ResetPasswordView, self).post(request, *args, **kwargs) However, the CSRF check doesn't seem to be getting checked for, because when I submit a request like the below curl 'http://127.0.0.1:8000/reset_password' \ -H 'Accept: */*' \ -H 'Accept-Language: en-US,en;q=0.9' \ … -
How can I let my users watch Netflix, Prime video etc inside my webpage if they have accounts?
We are developing a website for users to be able to watch tv shows/movies together synchronously. We are aware of extensions such as Teleparty, Scener etc. We want to embed it within the site so that no one needs to install an extension. We have solely used Django because it was mandatory to use it. Is there a way to do it? Or should we just develop an extension as well? P.S: There is an app called Rave and they stream all of the aforementioned platforms and more through their apps (including Mac, Windows and Android). We are not sure how that is possible. -
Django Ecommerce View problem with incrementing a quantity up or down on products with same Product Id but different Option ID values
My issue is probably something simple but Ive been stuck on it. I am attempting to make my ecommerce shopping cart increment quantity up and down while deleting the instance when quantity gets to zero. The issue is that when you add options to a product that is in another cart_item instance with the same base Product_id its throwing an error. Im aware it is pulling different instances of the same product_id into the same get request but im not sure how to resolve it. MultipleObjectsReturned at /cart/add_cart/2/ get() returned more than one CartItem -- it returned 2! Request Method: GET Request URL: http://127.0.0.1:8000/cart/add_cart/2/ Django Version: 3.1 Exception Type: MultipleObjectsReturned Exception Value: get() returned more than one CartItem -- it returned 2! Exception Location: C:\Users\dave\Desktop\tnaecommerce\venv\Lib\site-packages\django\db\models\query.py, line 433, in get Python Executable: C:\Users\dave\Desktop\tnaecommerce\venv\Scripts\python.exe Python Version: 3.11.0 Python Path: ['C:\\Users\\dave\\Desktop\\tnaecommerce\\ecomwebsite\\tnaecom', 'C:\\Python311\\python311.zip', 'C:\\Python311\\DLLs', 'C:\\Python311\\Lib', 'C:\\Python311', 'C:\\Users\\dave\\Desktop\\tnaecommerce\\venv', 'C:\\Users\\dave\\Desktop\\tnaecommerce\\venv\\Lib\\site-packages'] Server time: Mon, 19 Dec 2022 16:19:11 +0000 views.py ` from django.shortcuts import render, redirect, get_object_or_404 from .models import Cart, CartItem from store.models import Product, ProductOption from django.core.exceptions import ObjectDoesNotExist from decimal import Decimal from django.http import HttpResponse from decimal import Decimal from django.views import View from django.views.generic.edit import DeleteView def _cart_id(request): cart = request.session.session_key if … -
How can I change the URL that points to a File on the FileInput widget in the Django Admin frontend to point to my view
In my django project I want the user to be able to upload files, that are only accessible to users from the same company and from users that are staff. The solution I found is, that I upload the Files to a custom FileSystemStorage with a base_url that is not in urls, so files are not accessible over that url, the only way to access them is through my view. The problem is, that in the django admin frontend on a FileInput widget, it links to the url that is not accessible. How can I link it to my view? This is my model: upload_storage = FileSystemStorage(location='/private/', base_url='/private/') class Datei(models.Model): datei = models.FileField(upload_to='vertraege', storage=upload_storage) ... This is my view: @login_required(login_url='/login/') def serve_file(request, file_id): file = Datei.objects.get(id=file_id) user = User.objects.get(id=request.user.id) if file.firma == user.firma or user.is_staff: return FileResponse(file.datei) else: return HttpResponseForbidden() -
How can a celery task accept a list of files as an argument?
Actually, I don't know how I could make the task have a list of files as an argument. files = {} for file in request.FILES.getlist('files'): files[file.name] = file.file.read() my_celery_task.apply_async( kwargs={ 'files': files, } ) This throws the error 'Object of type bytes is not JSON serializable'. I also tried to add these files to the constructor of a class, but it's still not good because the object cannot be serialized. If I use files[file.name] = file, throws InMemoryUploadedFile is not JSON serializable, or if I use files[file.name] = file.file.read().decode('utf-8') => 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte I actually have no idea how to solve it. I need that dictionary of the form name: content as an argument given to the task -
why does 'Django mssql connection error' happen?
i have an ready database and I wanna use it in django web project. but I have an error about connection. here is the error raise NotSupportedError('SQL Server v%d is not supported.' % ver) django.db.utils.NotSupportedError: SQL Server v16 is not supported. here is the packeges asgiref 3.5.2 Django 4.1.4 django-mssql-backend 2.8.1 django-pyodbc-azure 2.1.0.0 django-pyodbc-azure-2019 2.1.0.0 mssql-django 1.2 pip 22.0.4 pyodbc 4.0.35 pytz 2022.7 setuptools 58.1.0 sqlparse 0.4.3 tzdata 2022.6 and database settings DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME':'veritabanıProje2', 'USER': 'sa', 'PASSWORD':'**', 'HOST':'DESKTOP-MDLFE99', 'PORT':'', 'OPTIONS':{ 'driver':'ODBC Driver 17 for SQL Server', }, }, } I'm using SQL server 2022. also the db file's name DB.sql in project directory. but I write here the name that is written while I create database. (I tried with DB.sql also of course) I can understand the fault is about version but which one is wrong I dont know. -
How to get data from api and load site at same time
I am making a website in Django that gets all stock data for the previous day from API. My problem is that when we take that data we run a few calculations and save data in DB (that process takes about 4 hours to finish) in that time I can't load my home page because that's where part of getting, calculating, and saving data is. So basically is there any way to do all things that I mentioned and use the site normally while getting, calculating, and saving data is running in the background? -
Django sqlite3 deleting existing data in my Django sqlite3 after deployment/deploying to azure app service
the app was working just fine after deploying it to azure app service(ran to some issues but was later on fixed), and after that i decided to clear the data in the sqlite3 table and after i cleared the table, now every time i make some changes/deployment it clears the data in the sqlite3 table and the users of Django administration page. note : i didn't have this problem before clearing the table and everything was fine until i cleared it using flush in the terminal, and no error in the console it simply deletes all the data of the sqlite3 table and users. after deleting i expected it to only clear the table 1 time, and that's it but now it clears the data after every deployment, and only after every deployment. thanks in advance! -
Multitenancy architecture with test and real data
Now we are tasked with making a demo version of our project for potential clients with test data. The frontend is on React and the backend is on Django Rest Framework. The way I see it: Users log in to the demo version. We send a request (GET) to the backend. In the middleware we check the request: 3.1 If it is a demo query, user connects to the sql-lite database with the test data 3.2 Otherwise, we connect to the main database If it is PUT, PATCH, DELETE, then we just show a popup that the action has occurred Do you know of examples of this kind of functionality, or maybe see pitfalls along the way? -
How to solve this error deploying to render.com: django.db.utils.OperationalError: could not translate host name "***" to address?
What I'm trying to do: Deploy my django app to render.com with a postgres database. I'm following the render guide: Getting Started with Django on Render. Problem: I am getting a build failed log error saying the following: django.db.utils.OperationalError: could not translate host name "***" to address: Name or service not known (I have omitted the actual host name here). What research I have done: I have searched the error extensively, however all of the highly rated solutions I have encountered so far are based on using Docker like this which I am not using. settings.py (snippet): import dj_database_url DEBUG = 'RENDER' not in os.environ if DEBUG: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } if not DEBUG: DATABASES = { 'default': dj_database_url.config(default='DATABASE_URL', conn_max_age=600) } In my render.com environmental variables, DATABASE_URL is saved with the postgres URL given by render which includes the database name, hostname, username and password. It follows this format: postgres://USER:PASSWORD@INTERNAL_HOST:PORT/DATABASE -
How do I get rid of "Select a valid choice. That choice is not one of the available choices." error when using a ModelChoiceField?
I am trying to manually render options for a select filed in a django template. When I submit the form I get an error: "Select a valid choice. That choice is not one of the available choices." The error message also asks for required fields which I have provided. locations models.py class Location(models.Model): name = models.CharField(max_length=20) is_source = models.BooleanField(default=False) is_destination = models.BooleanField(default=False) def __str__(self): return self.name orders forms.py class OrderForm(ModelForm): source = forms.ModelChoiceField(queryset=Location.objects.filter(is_source=True)) destination = forms.ModelChoiceField(queryset=Location.objects.filter(is_destination=True)) class Meta: model = Order fields = ['source', 'destination', 'items'] def save(self, commit=True): instance = super().save(commit=False) instance.order_number = math.floor(time.time()) instance.type = 'Purchase' instance.customer = self.context.get('request').user instance.status = 'New' if commit: instance.save() return instance orders create.html <form class="" method="POST"> {% csrf_token %} <h1 class='text-center'>Make an order</h1> <div class='row'> <div class='col-md-6 px-2'> <span class="fw-bold mx-2">Buy from</span> <div class="control-container border-primary d-flex align-items-center"> <i class="fa fa-map"></i> <select class="control ms-1 flex-grow-1" type="text" name="{{form.source.html_name}}" required > {% for value,label in form.source.field.choices %} <option value="{{value}}">{{label}}</option> {% endfor %} </select> </div> </div> <div class='col-md-6 px-2'> <span class="fw-bold mx-2">Receive in</span> <div class="control-container border-primary d-flex align-items-center"> <i class="fa fa-map"></i> <select class="control ms-1 flex-grow-1" type="text" name="{{form.destination.html_name}}" required > {% for value,label in form.destination.field.choices %} <option value="{{value}}">{{label}}</option> {% endfor %} </select> </div> </div> </div> <div class='row'> … -
Does parser type conversion happen inside django tests?
I have defined a custom argument parser from dateutil.relativedelta import relativedelta def custom_parser(value): # Do some actions with value return relativedelta(...) I the use this in a management command as parser.add_argument( "--tes", help=("blablaaa"), type=custom_parser, required=False, default='15s', ) Inside the handler, tes is correctly converted If I call the management command from the terminal directly. def handle(self, *_args, **options): tes = options['tes'] This is correctly converted to relativedelta when I directly run the command. However, If I run this using call_command('mycommand', tes='20s') options['tes'] is always a string. Why is it not being converted? Can't seem to find something on the codebase that would explain it. -
how to check if the uploading file format is different with the file name extension in Python
I want to check the uploading file format is different with the file name extension without saving the file. I tried magic library -
api_view['POST', 'GET'] against SOLID principles?
It's not a problem I'm facing its just an open discussion. in Django Rest framework we declare a decorator @api_view[] and it take an argument like POST GET PUT DELETE in my case I'm allowed to put more than one argument in the decorator and make one function made more than one responsibility like @api_view['POST', 'GET] def fbv_list(request):` if request.method == 'POST': #do something if request.method == 'GET': #do something in this case fbv_list make more than one thing which is POST and GET isn't in this case this function is against the Single responsibility class which is from SOLID principles ???? That's my question and if yes what is supposed to do to avoid breaking the SOLID . Thanks in advance. -
TransactionManagementError An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block. django project
I would like to add products or update them if they exist on the database. the data collected comes from an API, then I save it on my database that I created. models.py class Holl(models.Model): name=models.CharField(max_length=70,blank=True,null=True) service=models.CharField(max_length=255,blank=True,null=True) section=models.CharField(max_length=70,blank=True,null=True) class Meta: constraints=[ models.UniqueConstraint(fields=['name', 'section'], name='unique_rows') ] views.py url='http://myAPI/Holl/GetHoll' x=requests.get(url) contenu=x.json() all_holls=contenu['comm'] for holl in all_holls: ins, _ = Holl.objects.update_or_create(name=holl['name'],service=holl['service'], section=holl['section'],defaults={'name':holl['name'],'service':holl['service'],'section':holl['section']}) ins.save() After testing I get this error:An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block. -
Rest-API post request fails with one-to-many in Django REST Framework
I want to add with my API the possibility to add a record with a foreign key. I don't want to create a new record in the related table. I just want to add the ID of the existing record to the relation and save the record. The relation is shown in the following graphic. Diagram For example, the Get request to an acronym returns the following response: { "acronym": "Commercial water large stock third letter. Democrat your goal run price. Record myself decision attorney give.\nBill around difficult west protect change every. Various history total particular painting. Mission himself car can of try ten.", "decleration": "Less.", "date": "1992-02-12", "scope": { "scope_id": 16 } }, On the other hand, I would like the post to be possible with the following format: { "acronym": "Hello", "decleration": "World", "date": "2010-07-05", "scope": {"scope_id" : 16} } The corresponding part of the view (view.py) looks like this: @api_view(['GET', 'POST']) def acronym_list(request): if request.method == 'GET': acronyms = Acronym.objects.all() serializer = AcronymSerializer(acronyms, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = AcronymSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) In serialzier my idea was therefore to use a separate scope serializer for the post …