Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
I cannot search a field when i added a serializermethod in documentviewset
class VariantSerializers(DocumentSerializer): uom = serializers.SerializerMethodField('get_uom') def get_uom(request,obj): if obj.uom_id is not None: uomData = Uom.objects.filter(code=obj.uom_id).first() if uomData is None: return obj.uom_id return uomData.name class Meta: model = Variant document = VariantDoc fields = '__all__' Here i added a serializermethod and here i cannot search with uom name but it's not working -
how to redirect from a function to a url using name attribute + "?next=next_path" in django redirect?
view.py def register(request): next_cart_page = request.GET.get('next', '') if request.method == 'POST': status = logic.register_logic(request) if next_cart_page == 'cart': return redirect("/u/o/?next="+ next_cart_page) <- instead of "/u/o/" how can i use "verify_otp_user" else: return redirect("verify_otp_user") main.js $('.checkout_login_required').click(function(){ $('#register_user_link').attr('href', function(i, val){ return val + '?next=cart' }) }); using javascript i'm passing a value to the next key to an anchor tag. then on views.py i'm checking for that value in an if statement and based on that i'm redirecting to the next page with or without the next value in else statement i'm using path name attribute to redirect to a url how can i do the same in if statement as well while concatinating path name attribute(like verify_otp_user) with "?next=" + next_cart_page something like redirect("verify_otp_user" + "?next=" + next_cart_page), but this is not working . Any alternate solution if available ? Note: verify_otp_user does not have any parameter in its url its simply /u/o/ -
how to save multiple products in a single run
i have this issue trying to save de Order(detalle products) from my Sale, i don't know how to do it class Sale(models.Model): sale_id = models.IntegerField(primary_key=True) cli = models.ForeignKey(Clientes ,on_delete=models.CASCADE,null=True) date_joined = models.DateField(default=datetime.now) subtotal = models.DecimalField(default=0.00, max_digits=9, decimal_places=2) iva = models.DecimalField(default=0.00, max_digits=9, decimal_places=2) total = models.DecimalField(default=0.00, max_digits=9, decimal_places=2) class Order (models.Model): order_id = models.AutoField(primary_key=True) orden = models.IntegerField() sale_id = models.ForeignKey(Sale ,on_delete=models.CASCADE,null=True) codigo_producto = models.IntegerField() precio = models.IntegerField() cantidad = models.IntegerField() above you can see my to models and here is how i called in my views def mod_venta(request,orden_actual=0): if request.session.get("codigo_usuario"): listaorder=Order.objects.all() listatabla=producto.objects.all() listacliente=Clientes.objects.all() if request.method=="GET": return validar(request, "venta.html",{"listaorder":listaorder,"listacliente":listacliente,"listatabla":listatabla}) if request.method=="POST": if orden_actual==0: venta_nueva=Order(order_id=request.POST.get('orden_actual'), codigo_producto=request.POST.get('codigo'), precio=request.POST.get('precio'), cantidad=request.POST.get('canti')) venta_nueva.save() return redirect("../venta/0") else: return redirect("login") and only try to save with a form, only saving one element in the "OrderDetalle", (i only work with for a month ) so I wanted to know how I could do to bring all the sales data in orders -
Error get static file from another project
I'm on Network project but when I runserver this project, it get static file from my another project is Mail, static file in Network project still work ok, but it appear error in my Terminal and I don't know how to solve it ! Network |-static |-network |-style.css |-index.js [21/Feb/2022 12:22:48] ←[33m"GET /static/mail/inbox.js HTTP/1.1" 404 1667←[0m setting.py STATIC_URL = '/static/' -
Import the csv data to database and update the existing data using their id in django
I want to update some existing data by uploading the CSV file. I have some data in the MySQL database and some of them have spelling mistakes and some others mistakes. So I have correct data on the CSV file and I want to upload it and update existing data on the database. Below code for importing data into the database. So how can I modify this code to update the existing data of the database? views.py # Import the data to database def import_countries(request): with open('C:/python/Azuro/azuro_django/pms/templates/pms/countryname.csv') as csvfile: reader = csv.DictReader(csvfile) for row in reader: data = Country(currency=row['Currency'], name=row['Country']) data.save() return HttpResponse('Data Uploaded!!') Thanks! -
Django rest framework API key is not able to authenticate when using custom models
I am using rest_framework_api_key for authenticating services those use our API, I have following versions of Django, Rest framework and rest_framework_api_key Django==3.2.12 djangorestframework==3.13.1 djangorestframework-api-key==2.1.0 My Installed Apps in settings.py INSTALLED_APPS = [ 'django_extensions', 'django_elasticsearch_dsl', 'drf_yasg', 'media_fetchers', 'api_registration', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'rest_framework_api_key', 'corsheaders', 'admin_panel', 'accounts', ] Default Permissions classes REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework_api_key.permissions.HasAPIKey', 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], "TEST_REQUEST_DEFAULT_FORMAT": "json", "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", "PAGE_SIZE": 20, } My Models for using APIKey model class Service(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="service") name = models.CharField(max_length=128) active = models.BooleanField(default=True) class ServiceAPIKey(AbstractAPIKey): organization = models.ForeignKey( Service, on_delete=models.CASCADE, related_name="api_keys", ) So I have created an API in which permission_classes = [HasAPIKey] which is not authenticating and it gives the response authentication credentials were not provided. I passed the API key in postman in headers just like it was mentioned in the official docs Django rest API key The twist is when I remove the models and use their APIKey model as it is, it does authenticate with HasAPIKey... Anything I am doing wrong? I also read all the issues in their github, no one seems to have the same problem as mine, but people are having issues while using modelviewsets api. -
Create table on Reportlab the next row display above
I am new to reportlab for creating PDF and very confuse about x,y coordinate. When create the table on canvas, the second row insert above the first row instead. So, the data on table is overlap with above. How to fix it. Thank you advance. .. 4th 3rd row 2nd row 1st row -
Django-Streamlit integration
Can I integrate Streamlit with Django ? I tried but didn't know what to render ? I used the this code inside the django app -
Django filter two levels of DB relationships
I have three models that I'm trying to hook up so I can pull-out StudentItem information based upon ID of the Course that was passed in. The models look like the following: class Student(models.Model): first_name = models.CharField(max_length=128, unique=False) last_name = models.CharField(max_length=128, unique=False) class Course(models.Model): name = models.CharField(max_length=256, unique=False) course_student = models.ManyToManyField(Student) class StudentItem(models.Model): item_student = models.ForeignKey('Student',on_delete=models.CASCADE) description = models.CharField(max_length=256, unique=False, blank=True) Right now, my view looks like: class CourseDetailView(LoginRequiredMixin,DetailView): model = models.Course def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['student_item_list'] = StudentItem.objects.prefetch_related(Prefetch('item_student__id__course_student',queryset=Course.objects.filter(pk=self.kwargs['pk']))) return context I can get everything connected via prefetch across all of the models but the queryset filtering is not working. I am getting all records for every course regardless of the course ID that was passed in. Hopefully it's a small tweak. Really appreciate the help! -
customize signing key in drf-simplejwt
I want to customize the signing key to include tenant information. Right now the token generated is valid for all the tenants. This question has been already asked before but it is for flask and jwt-extended here. Is there anyway to do the same functionality in drf-simplejwt? SIMPLE_JWT = { ... 'SIGNING_KEY': SECRET_KEY, ... } In the documentation, they have provided that in the settings we can change it, but i want to change it based on the incoming request where i can get the tenant info in the url. If this is not the right approach please suggest if there is any other way to restrict jwt per tenant. -
How to check if an existing specific user (say techxhelp) is logged in and then logout that specific user in django?
I want to do something like this in views. This is not a perfect code. I am just giving an example of what is my requirement. def home(request): if request.user.techxhelp is_logged_in: logout(techxhelp) else: pass I tried searching Google and different sites but I found nothing. If anyone knows the solution, I shall be very thankful. -
Django: Set a dropdown form field to a value from the current detail view's Model
I have a little Django form that allows me to change the stage of an assessment. This is used by staff to keep the user and other staff members up to date on where they're at. Currently, I'm just loading the default option as what I have set as default in the model ("NEW"), I would prefer if this would instead select the option that the current model of the detail view page is actually set to, e.g. ("IN PROGRESS"). Screenshot below is what it currently displays. So if the stage is In Progress then on the page load, I would like this dropdown option to have already selected "In Progress". Is there any method either within the form widget settings, html template, or within Javascript to make this change? Forms.py class ChangeStageForm(ModelForm): class Meta: model = Assessment fields = ['assessment_stage', ] labels = { 'assessment_stage': _('Change Assessment Stage'), } Model Field with Choices ASSESSMENT_STAGE_CHOICES = [ ('NEW', 'New'), ('INPRO', 'In Progress'), ('WAIT', 'Waiting on Applicant'), ('CAN', 'Cancelled'), ('DEC', 'Declined'), ('COMP', 'Completed'), ] assessment_stage = models.CharField(max_length=21, choices=ASSESSMENT_STAGE_CHOICES, default='NEW') Template HTML Assessment Stage: {{ assessment.get_assessment_stage_display }} <form method="POST"> {% csrf_token %} {{ change_stage_form }} <button type="submit" name="change_stage" class="btn btn-success">Save</button> </form> -
*ModuleNotFoundError: No module named 'xhtml2pdf'*
I have a simple Django web site when I compile my code I can get this error: ModuleNotFoundError: No module named 'xhtml2pdf' -
Django Many to One + Dynamic Forms
I am working on defining the models for my Django web app, which is a quote generator. Each quote will contain N number of different measurements (driveway, sidewalk, porch, etc) that will be stored and then used to calculate the total price per service. Is there a way I can structure the models to implement DRY so I don't have to code out each element of a quote? Additionally, is there a way in Django forms to allow a variable number of Measurement for each quote? models.py class Quote(models.Model): quoteDate = models.DateTimeField(auto_now_add=True) customerLastName = models.CharField(max_length=80) customerFirstName = models.CharField(max_length=50) ServiceRep = models.ForeignKey( User, on_delete=models.SET_NULL) orderNumber = models.IntegerField() #varying number of Measurements here class Measurement(models.Model): name = models.CharField(max_length=250) description = models.CharField(max_length = 250) length = models.FloatField(blank=True, null=True) width = models.FloatField(blank=True, null=True) flat_fee = models.FloatField(blank=True, null=True) quote = models.ForeignKey(Quote, on_delete = models.SET_NULL) -
Requesting guidance on how to create a Django Admin with multi-tenancy support
I am requesting help to create a custom Django admin site for a multi-tenant B2B ecommerce platform. I am still new to Django and building SaaS like applications. Any help to understanding this will be highly appreciated. I would like this admin dashboard to be able: To create, update, manage each tenant user, where we can update and manage their storefront and their own users and products. Have each tenant have their own admin dashboard that only they have access to, where they can manage their own users and products. To have super admin capabilities to push changes to all tenants. Thank you! -
I am getting a MultiValueDictKeyError when I'm trying to post a multiple choice form field to database
I have a form setup that Is meant to supplement my main signup form by adding more data to the user database, It is a multiple choice form. Here is the specifics of the error I am getting. Environment: Request Method: POST Request URL: http://127.0.0.1:8000/register/more Django Version: 3.2.2 Python Version: 3.9.5 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mainpage', 'register.apps.RegisterConfig'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\datastructures.py", line 76, in __getitem__ list_ = super().__getitem__(key) During handling of the above exception ('minfo'), another exception occurred: File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(request) File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\david\OneDrive\Desktop\Django\myapp\register\views.py", line 19, in moreinfo minfo = request.POST['minfo'] File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\datastructures.py", line 78, in __getitem__ raise MultiValueDictKeyError(key) Exception Type: MultiValueDictKeyError at /register/more It seems like it has something to do with a line in my views.py file, specifically: minfo = request.POST['minfo'] -
How can i change the location of the Django admin search-box?
enter image description here I want to move the search box and action box on the Django-admin page to the bottom of the page. I already found the Django-admin change_list.html file, but i don't know how to change it... How do I do it? -
How to split groupby fields when deriving queryset results in Django
[views.py] annotations = {} types = ('A', 'B') for type in types: annotations[type] = Count('id', filter=Q(type=type)) annotations[f'R_{type}'] = Count('id', filter=Q(type=type, is_recruiting='Recruiting')) annotations[f'N_{type}'] = Count('id', filter=Q(type=type, is_recruiting='Not yet recruiting'))) counts = Study.objects.filter(is_deleted=0) \ .values('teacher') .annotate(**annotations).values('teacher', *annotations.keys()) By grouping teachers, we got the count for each teacher. Here is the result: <QuerySet [ {'teacher': 'Helen', 'A': 1, 'R_A': 1, 'N_A': 0, 'B': 3, 'R_B': 2, 'N_B': 0}, {'teacher': 'Helen/Jennie', 'A': 0, 'R_A': 0, 'N_A': 0, 'B': 1, 'R_B': 0, 'N_B': 0}, {'teacher': 'Jennie', 'A': 0, 'R_A': 0, 'N_A': 0, 'B': 1, 'R_B': 0, 'N_B': 0}] > However, when grouping teachers, I want to split them based on "/" and add a count for each teacher to output the following results. <QuerySet [ {'teacher': 'Helen', 'A': 1, 'R_A': 1, 'N_A': 0, 'B': 4, 'R_B': 2, 'N_B': 0}, {'teacher': 'Jennie', 'A': 0, 'R_A': 0, 'N_A': 0, 'B': 2, 'R_B': 0, 'N_B': 0}] > However, splitting in values is not possible. If you have a workaround please help me. -
Using ASP.net PasswordHash in Django for authentication
I have a database created by someone using C# .Netframework and now I need to create API using Django and connect this API to the same database. But I can't compare PasswordHash created by .Net with CreateAsync function. I have already researched how CreateAsync works this was very helpful and I tried with Python to get the same hash, but I failed. Can someone help me? python code import base64 import hashlib PassHash = "AQAAAAEAACcQAAAAEJa4CYSXaNB9U7+mWQYqg1GcO/tWRlrvqvBwGWEl/0W7tNKcxTOVUjeBq8OoYWsCEA==" bytes = base64.b64decode(PassHash) salt=bytes[0x0E:0x1E] # bytes from 14 to 29 hash=bytes[0x1E:0x3D].hex() # bytes from 30 to 61 password = "hello world" #this pass in not real password = password.encode() password_hash = hashlib.pbkdf2_hmac("SHA256", salt,password,10000) print(password_hash.hex()) -
swapping entries of 2 records
#models.py class Numbers(TimeStampMixin): name = models.CharField(max_length=20) number = models.IntegerField() def __str__(self): return self.name #Dashboard output NAME NUMBER imageURL1 1 imageURL2 2 imageURL3 3 imageURL4 4 My goal is to allow an admin to determine the position of the image in the table after the fact. So that they can be displayed on the homepage in a different order. (without js) #imageURL? is just an image upload is there a way that when an admin, changes the number of imageURL1 to "2", that then automatically changes the number of imageURL2 to "1" and so on? -
Django/React/Axios Updating an image is sending a string value instead of updating the image
I am trying to develop a website for an alumni organization. I have a table for events with several fields, two of which being image fields. I can successfully create the event with all fields, but I cannot update it like intended. When I try to update, I can only a single field, if I change the picture as well. I think it is sending the URL of where the photo is located as a string, so I get the error "the file is not the expected format, but if I upload an image, it works as intended. I'd like to be able to update other fields without having to also change the picture. The image fields are gallery and banner_image (I'm just trying to get the problem fixed with one for now and they are at the bottom of the form. I have my axios http functions in a seperate file. import React, { useState, useEffect } from "react"; import { useParams } from "react-router-dom"; import { getEventById, updateEventById } from "../../../api/apiCalls"; const EventUpdate = () => { const { id } = useParams(); const [event_name, setEventName] = useState(""); const [date, setDate] = useState(""); const [time, setTime] = useState(""); … -
How to change DRF API SlugRelatedField Response template
I have managed to create working model with 2 different serializers, depending what we are doing. Right now, ReadTitleSerializer returns this JSON object: [ { "id": 1, "category": { "id": 1, "name": "Movies", "slug": "movie" }, "genres": [ { "id": 1, "name": "Drama", "slug": "drama" } ], "name": "Drama Llama", "year": "1998-02-02", "description": null, "rating": null } ] And this is response from WriteTitleSerializer: { "id": 1, "category": "movie", "genres": [ "drama" ], "name": "Drama Llama", "year": "1998-02-02", "description": null, "rating": null } How can I make WriteTitleSerializer respond similar to ReadTitleSerializer? I am using SlugRelatedField in WriteTitleSerializer because the JSON input should be list of slugs. Input JSON { "name": "Drama Llama", "year": "1998-02-02", "category": "movie", "genres": [ "drama" ] } serializers.py class ReadTitleSerializer(serializers.ModelSerializer): category = CategorySerializer() genres = GenreSerializer(many=True) class Meta: model = Title fields = '__all__' read_only_fields = ('category', 'genres') class WriteTitleSerializer(serializers.ModelSerializer): category = SlugRelatedField( slug_field='slug', queryset=Category.objects.all(), required=True ) genres = SlugRelatedField( slug_field='slug', queryset=Genre.objects.all(), many=True, required=True ) class Meta: model = Title fields = '__all__' -
how to query a postgres table from a django app using sql
I have created a django application, i am currently inside an aws ec2 instance, to be specific i am trying everything inside the python interpreter, which means after typing **python3**. I have passed all the rds postgres db credentials and it created the connection. and created the table in django as: class Person(models.Model): # just an example .... now from inside the python interpreter import psycopg2 conn = psycopg2.connect(host=host, database=database, user=user, password=password) cur = conn.cursor() cur.execute("""SELECT * FROM Person""") # it fails here row = cur.fetchall() and i am getting the result psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block is there something that i am missing? how can i correctly query the table Person in sql? -
RBAC on DjangoRestFramework
How best to implement RBAC on DRF? I need the database objects to be separated and users to see only those that we will allow to see. A possible example of work: An authorized Backend request, response with all objects that have access -
Django collect static S3 An error occurred (403) when calling the HeadObject operation: Forbidden
I have created a S3 bucket for my Django static files. I am able to display the static files from S3 however when I run the python manage.py collectstatic command I get the error "An error occurred (403) when calling the HeadObject operation: Forbidden" error traceback Traceback (most recent call last): File "manage.py", line 22, in <module> main() File "manage.py", line 18, in main execute_from_command_line(sys.argv) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 187, in handle collected = self.collect() File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect handler(path, prefixed_path, storage) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 338, in copy_file if not self.delete_file(path, prefixed_path, source_storage): File "/Users/john/Environments/PRM/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 248, in delete_file if self.storage.exists(prefixed_path): File "/Users/john/Environments/PRM/lib/python3.6/site-packages/storages/backends/s3boto3.py", line 469, in exists self.connection.meta.client.head_object(Bucket=self.bucket_name, Key=name) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/botocore/client.py", line 391, in _api_call return self._make_api_call(operation_name, kwargs) File "/Users/john/Environments/PRM/lib/python3.6/site-packages/botocore/client.py", line 719, in _make_api_call raise error_class(parsed_response, operation_name) botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden base_settings.py # aws settings AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY') AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME') AWS_DEFAULT_ACL = 'public-read' AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com' AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'} # s3 static settings STATIC_URL = …