Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django python mysql shell error while opening the shell
while connecting the Django with MySQL and opening the shell using python3 mannage.py shell I got this error -
how can I tab scroll items in image gallery in django with javascript
Please i am trying to do a tab image gallery in django using javascript to activate it dynamically. I have tried all i know but i dont know how to pass the variable to onclick="currentSlide()" to make it work incrementally . Please i am trying to do a tab image gallery in django using javascript to activate it dynamically. I have tried all i know but i dont know how to pass the variable to onclick="currentSlide()" to make it work incrementally . Please i am trying to do a tab image gallery in django using javascript to activate it dynamically. I have tried all i know but i dont know how to pass the variable to onclick="currentSlide()" to make it work incrementally . #template -property_info.html <div class="container"> <!-- Full-width images with number text --> {% for p in images %} <div class="mySlides"> <div class="numbertext">1 / 6</div> <img src="{{p.images_of_property.url}}" style="width:100%"> <h1>{{p.id}}</h1> </div> {% endfor %} <!-- Next and previous buttons --> <a class="prev" onclick="plusSlides(-1)">&#10094;</a> <a class="next" onclick="plusSlides(1)">&#10095;</a> <!-- Image text --> <div class="caption-container"> <p id="caption"></p> </div> <!-- Thumbnail images --> this is where i have issues . i dont know how to pass the value so it can increment dynamically. {% … -
Django views.py if statement not passing value to HTML File
In my Django views.py page, I have some code, where the user enter an employee ID with an HTML form, that submits the value to views.py. Using that, I check whether the employee ID is in a database by iterating over each ID in the database, appending it to an empty list, and using an if statement. The parts where I receive the employee ID is working fine, and so is the ID getting appended to the list. However, when I use an if statement to check whether the employee ID that was given is a part of the list, isn't working. Despite this working on Jupyter Notebook when i tested the same. Here's the code: views.py: from django.shortcuts import render import pandas as pd dat = pd.read_csv('/Users/Lenovo/Desktop/Cakewala DB/CW_Attendance/AttendanceApp/test_employee.csv') # Create your views here. def home(request): employee_id = request.POST.get('id') print(employee_id) id_list = [] for id in dat["ID"]: id_list.append(id) print(id_list) if employee_id in id_list: print("yes") employee_row = dat.loc[dat["ID"] == employee_id] employee_name = employee_row.iat[0, 1] return render(request, 'attendance/index.html', { "employee_id": employee_id, "employee_name": employee_name }) return render(request, 'attendance/index.html') index.html: <!DOCTYPE html> <html> <head> <title>Attendance - Home</title> </head> <body> <h1>Cakewala Attendance</h1> <form method="POST"> {% csrf_token %} <label for="id">Employee ID</label> <br> <input type="number" name="id" max="9999" … -
How to solve the problem that json type data is loaded from template to string type
The "content" field is data in json format. But when I check this value in template , it resolves to string. I want to print the value corresponding to teacher from the dictionary below. What's wrong? [views.py] history = History(user=request.user, study=study, content=study.json()) history.save() test = History.objects.filter(study__id='12') "content" value stored in DB: {'id': 12, 'is_deleted': False, 'type': 'secondary', 'study_name': 'Math', 'teacher': 'Halen/Lisa', 'team': 'A'} [html] {% for test in test %} {{ test.content.teacher }}? {{ test.content}} {% endfor %} In the case of a dictionary, the desired key value can be called, but since it is a string type, the teacher value cannot be retrieved. What should the teacher do to get the value, which is the key? -
How can I host a Django web app on Cpanel out the public_html folder?
I am trying to host a Django web application on Cpanel. However, my hosting service is having a main folder which is called public_html. In this folder, there is the index page. My project folder named myapp is out of the public_html folder. Whenever I run the application, it is showing the content of the index.html which is in the public_html folder instead of running the home page of my application that should be executed from this main urls.py file. Bellow is the main urls.py content. from django.contrib import admin from django.urls import path,include from django.conf import settings from django.conf.urls.static import static from django.conf.urls import url from django.views.generic.base import TemplateView urlpatterns = [ path('admin/', admin.site.urls), path('depenses/', include('depenses.urls', namespace='depenses')), path('cart/', include('cart.urls', namespace='cart')), path('orders/', include('orders.urls', namespace='orders')), path('coupons/', include('coupons.urls', namespace='coupons')), path('', include('shop.urls', namespace='shop')), # path('', TemplateView.as_view(template_name='templates/index.html'), name='home'), ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Again my project is out of the public_html folder. Please assist me to host my application. -
How to I allow user to upload any type of file in database in Django?
I want to accept any type of file from the user and save it in the database in Django <input type="file" name="file_name" required> But when I try to access the file in views.py it throws the Exception as 'file_name'. file_name = request.FILES['file_name'] In the same field when I select some image. The image is stored in the media folder. -
Django: Defining 'present_company' from 'company_name' ManytoManyField
I have 2 models, Company and Employee, and defined company history as a ManytoManyField. I am trying to save the present company name of the employee which I get from the company name ManytoManyField. What should be the method to save it? This is what I tried: I tried to override the save method in Models. models.py from django.db import models class Company(models.Model): name = models.CharField(max_length=100) def __str__(self) -> str: return self.name class Employee(models.Model): name = models.CharField(max_length=100) company_name = models.ManyToManyField(Company, blank=True) present_company = models.CharField(max_length=100, blank=True) def save(self): super(Employee, self).save() last_index = self.company_name.count()-1 self.present_company=str(Company.objects.filter(employee__name=self.name)[last_index]) super(Employee, self).save() def __str__(self) -> str: return self.name I face two problems with this method: I add/edit the models from the admin site, when I try to save the models and print the names of the company, it prints out the previous edit and not the latest one. The order of the companies is not according to the order in which I save the models. So, what could be the changes in this method, or, some other method to do this job. -
Django Prefetch Related Issue - Understand it correctly
I do have the following Issue - I want to display all of the bundles with their component relations in a template: Here is my ORM-Model: class Component(models.Model): plenty_var_number = models.CharField(max_length=120, default=None, unique=True, null=True) plenty_var_id = models.CharField(max_length=120, default=None, unique=True) description = models.TextField(max_length=1000) category = models.ForeignKey(Category, on_delete=models.DO_NOTHING, null=False) updated_at = models.DateTimeField(auto_now=True, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True) def __str__(self): return f"{self.category.name} - {self.plenty_var_number}" class Bundle(models.Model): active = models.BooleanField(default=True) plenty_var_number = models.CharField(max_length=120, default=None, unique=True, null=True) plenty_var_id = models.CharField(max_length=120, null=True, default=None) car = models.ForeignKey(Car, on_delete=models.DO_NOTHING) # m2m defined by BundleComponentRelation components = models.ManyToManyField(Component, through="BundleComponentRelation") linked_to_plenty = models.BooleanField(default=False) price = models.DecimalField(max_digits=10, decimal_places=2, default=-1.00) updated_at = models.DateTimeField(auto_now=True, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True) class BundleComponentRelation(models.Model): component = models.ForeignKey(Component, on_delete=models.DO_NOTHING) bundle = models.ForeignKey(Bundle, on_delete=models.DO_NOTHING) qty = models.IntegerField(default=1) updated_at = models.DateTimeField(auto_now=True, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True) I have played around with select_related and prefetch_related in my view to pass them via context to the template to display it for my users: html-template: {% for bundle in bundles %} <tr> <td><p class="fw-bold">{{ bundle.plenty_var_number }}</p></td> <td>{{ bundle.price }}</td> <td><p class="fw-bolder mb-0">{{ bundle.car }}</p> <p class="mb-0">{{ bundle.car.roof_type }}</p> <p class="mb-0">BJ: {{ bundle.car.production_start }} - {{ bundle.car.production_end }}</p> </td> {# Bundle Component Relations here #} <td style="font-size: … -
Convert word to pdf on Python without MS Word or Libre Office and on deployed Heroku app (Django)
I want to convert a .docx file to .pdf file as part of a big project that I am working on. The only problem is that I work on widows and the project is deployed on Heroku which is Linux based. My locally tested library, packages don't work on deployed version since most of them use Word or Libre Office. Please help me with a library or code package or anything that I can implement in Python where I provide the input file as docx and want the output file to be a pdf doc. Sample input and output file: input = os.path.join(BASE_DIR, doc_name+'.pdf') output = os.path.join(BASE_DIR, doc_name+'.docx') -
Django: How to keep code and database sync'ed when deploying on Heroku?
Let's say we have a Django project called Alpha. Developers work on Alpha on their dev environment before deploying the Django project to Heroku. The Procfile may look something like: release: python manage.py migrate web: python -m gunicorn wsgi:application When a developer tries to deploy a new version of Alpha, the project is shipped altogether with its migrations files (as recommended). At the end of the deployment, Heroku will execute the release statement python manage.py migrate to make all the relevant changes to the database. Because release is part of the overall deployment process, if it fails then the new code will not be deployed. However... While the code will be reverted back to what it was before the deployment (as expected), the potential changes to the Heroku's database are going to be permament. For example, let's assume that the new version has three new migrations: 0011 0012 0013 The first two migrations are executed correctly and the database is changed accordingly. They are also added to the database table django_migrations. The last one, however, contains an issue (e.g., it defines a constraint that the stage data don't respect). In this scenario, the code on Heroku (both /migrations/ and models.py) … -
Using validate filename function in all Django sterilizers
I have a validate_filename function in a serializer but seems like I have to use the same function inside multiple serializer classes to validate the file name. It doesn't seem good because it seems redundant and the concept of DRY is not being implemented. For eg: class ExampleOne(serializers.ModelSerializer): class Meta: model = ExampleOne fields =[''] def create(self, validated_data): ... return item def validate_extension(filename): extension = os.path.splitext(filename)[1].replace(".", "") if extension.lower() not in ALLOWED_IMAGE_EXTENSIONS: raise serializers.ValidationError( (f'Invalid uploaded file type: {filename}'), code='invalid', Now, I have to use the same function inside other serializers class inside the same serializer file and don't want to repeat the same code again. Is there any way we can use a separate file like validatefile.py and import the function only inside the serializer class?? But dont really know how to start and go about it. -
Getting django.urls.exceptions.NoReverseMatch: Reverse for 'fruit' not found. 'fruit' is not a valid view function or pattern name while unit testing [duplicate]
So I'm unit testing my products app urls using unittest framework but I'm getting this error home(urls.py) urlpatterns = [ path('admin/', admin.site.urls), path('', home, name='home'), path('products/', include('products.urls', namespace='products')) ] "products" app(urls.py) urlpatterns = [ path("fruit", views.fruit, name='fruit'), ] "products" app (views.py) def fruit(request): product = Product.objects.filter(category="Fruit") n = Product.objects.filter(category="Fruit").count() params = {'product': product, 'n': n} return render(request, 'products/fruit.html', params) test_urls.py import unittest from django.urls import reverse, resolve from products.views import * class TestUrls(unittest.TestCase): def test_fruit_url_is_resolved(self): url = reverse('fruit') self.assertEquals(resolve(url).func.view_class, fruit) if __name__ == "__main__": unittest.main() -
How to save flags to Django database from admin panel?
In the Django admin panel, all fields are saved to the database, except for the flags field of the SubscriberPlan model. That is, I can (un)check any flag and try to thus update a record, but the flag statuses won't be saved to the database. If I run python manage.py shell, import SubscriberPlan, do something like plan = SubscriberPlan.objects.all()[0], plan.flags = "a" plan.save() then the database will be updated and the Active flag will be displayed in the Admin panel, but, still, it won't be possible to update it from the Admin panel. So, how is it possible in Django to save this kind of a field to the database from the Admin panel? To be honest, I don't understand why it's not saved by default, while other fields are saved. admin.py from django.contrib import admin from django.utils.safestring import mark_safe class SubscriberPlanFlagsWidget(forms.Widget): available_flags = ( ('a', ('Active')), ('n', ('New')), ('p', ('Popular')), def render(self, name, value, attrs=None, renderer=None): html = [] for f in self.available_flags: html.append('<li><input type="checkbox" id="flag_%(key)s" %(checked)s key="%(key)s"/><label for="flag_%(key)s">%(name)s</label></li>' % { 'key': f[0], 'name': f[1], 'checked': 'checked' if f[0] in value.lower() else ''}) html = '<input type="hidden" name="%s" value="%s"/><ul class="checkbox flags">%s</ul>' % (name, value, ''.join(html)) return mark_safe(html) class SubscriberPlanAdmin(admin.ModelAdmin): … -
How to pass data from form.cleaned_data as variable to another view in Django
I am new to Python and Django. I am working on a form that includes a couple of IntegerField instances such as: class Hex(models.Model): horizontal_rows = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(20),validate_odd]) vertical_rows = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(20)]) In the view I have the following: def square_view(request): if request.method == 'POST': form = SquareForm(request.POST) if form.is_valid(): print(form.cleaned_data) return redirect(reverse('puzzle:board')) This in return gives the following output once the form is submitted: {'horizontal_rows': 3, 'vertical_rows': 3} The request is redirected to another page via (reverse('puzzle:board'). My goal is to use the data from form.cleaned_data in order to generate a board with X number of rows and Y number of columns on the new page. I am unsure how to approach this. Should I pass the data as variables directly to the template (via jinja), or should I pass it to the view of the other page (reverse('puzzle:board'). -
Uploading files show permission denied (CentOS7 + Apache + mod_wsgi + django)
I deployed a beta version of my django app to DigitalOcean and I am serving it using Apache and WSGI. Everything works well include static files and 'get' media files(I saved it directly to DB), except uploading files. It shows 'Permission denied' error, with full directory like '/home/test/project/media/test.jpeg'. I configured httpd-vhosts like this. <VirtualHost *:80> ServerName example.com ServerAlias www.example.com WSGIScriptAlias / /home/test/project/project/wsgi.py WSGIDaemonProcess example.com python-home=/home/test/project/.venv python-path=/home/test/project/project WSGIProcessGroup example.com Alias /static/ /home/test/project/frontend/build/static/ # react build dir <Directory /home/test/project/frontend/build/static> Require all granted </Directory> Alias /uploadImg/ /home/test/project/media/ <Directory /home/test/project/media> Require all granted </Directory> <Directory /home/test/project/project> <Files wsgi.py> Require all granted </Files> </Directory> </VirtualHost> So httpd is running with daemon, and my directory 'media' is owned by root, 755. But the directory 'media' is symbolic link dir which located at '/home/test/' I did many attempts to fix it but nothing works.. -
How to calculate the percentage of 5 stars, 4 stars rating for an object
I have this rating for my review django model. 5 star 4 star 3 star 2 star 1 star What I want to do is get the percentage of each component based on the rating. Something like this: # get 5 average rating five_avg_rating = qs.filter(rating=5).aggregate(Avg('rating'))['rating__avg'] five_avg_rating = (five_avg_rating / 5) * 100 if five_avg_rating != None else 0.0 # get 4 average rating four_avg_rating = qs.filter(rating=4).aggregate(Avg('rating'))['rating__avg'] four_avg_rating = (four_avg_rating / 5) * 100 if four_avg_rating != None else 0.0 .... # get 1 average rating one_avg_rating = qs.filter(rating=1).aggregate(Avg('rating'))['rating__avg'] one_avg_rating = (one_avg_rating / 5) * 100 if one_avg_rating != None else 0.0 The sum up percentages should = 100%. So if the math is correct, add all the rating percentages should = 100% Here is an image of what I get now, which is not what I really want: enter image description here How can I implement this better? -
Django: psycopg2.errors.UndefinedColumn
I have an app called map. Within map, I have the following models being specificed: class Checkin(models.Model): time = models.DateTimeField() class Pin(models.Model): name = models.CharField(max_length=64) latitude = models.FloatField() longitude = models.FloatField() user = models.ForeignKey(User, on_delete=models.CASCADE) place_id = models.TextField(default=None, null=True) address = models.TextField(default=None, null=True, blank=True) checkins = models.ForeignKey(Checkin, on_delete=models.CASCADE, default=None, null=True) class Meta: unique_together = ["name", "latitude", "longitude"] The migrations work fine. However, when I try to access the class Pin via the admin panel, I get this error message: psycopg2.errors.UndefinedColumn: column map_pin.checkins_id does not exist LINE 1: ...r_id", "map_pin"."place_id", "map_pin"."address", "map_pin".... If I try to access the class Pin via Pin.objects.all() I also receive the same error. -
I wanna update a value to request with React axios from Django
This is one of value in Django api. { "id": 89, "text": "dd", "checked": false }, { "id": 90, "text": "dd", "checked": false }, } I wanna update the "checked" value like true/false to request with react axios. Like a check toggle button. const [check, setCheck] = useState(false); return ( <> <button onClick = { () => setCheck(!check) }>X <div className = {todo ${check && 'checked'}}>{ text } </> ); -
Make a query with Django ORM?
I have used this code to make a query: views.py: reservations_table = Reservation.objects.all() total_commission = 0 for reservation in reservations_table: for city in COMMISSION_RATES.keys(): if reservation.city == city.upper(): total_commission += reservation.net_income * COMMISSION_RATES[city] / 100 models.py: from django.db import models class Reservation(models.Model): reservation_code = models.CharField(max_length=150,unique=True) checkin = models.DateField() checkout = models.DateField() flat = models.CharField(max_length=150) city = models.CharField(max_length=150) net_income = models.DecimalField(max_digits=10, decimal_places=2) def __str__(self): return self.reservation_code constants.py: COMMISSION_RATES = { 'LONDON': 10, 'PARIS': 12, 'PORTO': 9, } How to make a query but using only Django ORM? -
Get the total count of object with specific status
Trying to get the total count of objects to display on the homepage. Here's my code def dashboard(request): total_issues = Issue.objects.all().count() open_issues = Issue.objects.filter(mark_as='Open').count() closed_issues = Issue.objects.filter(mark_as='Closed').count() context = {'ordered_issues': ordered_issues, 'total_issues': total_issues, 'open_issues': open_issues, 'closed_issues': closed_issues} return render(request, 'issues/total_issues.html', context) and my model class Issue(models.Model): MARK_AS = ((True, 'Open'), (False, 'Closed')) title = models.CharField(max_length=100) content = models.TextField() date_posted = models.DateTimeField(default=timezone.now) author = models.ForeignKey(User, on_delete=models.CASCADE) assignee = models.ForeignKey(Profile, on_delete=models.SET_NULL, null=True, blank=True) mark_as = models.BooleanField(choices=MARK_AS, default=True) def __str__(self): return self.title def get_absolute_url(self): return reverse('issue-detail', kwargs={'pk': self.pk}) Nothing get outputted What did I do wrong? -
Can we filter out just the domain name from a link in a TextField object using urlize and a custom method?
Is it possible to use urlize and a custom filtering method in a TextField object to filter out the domain part of the URL, leaving the suffix and the prefix? For example: in, "hey this is a link https://www.google.com" we filter it out and the result looks something like this "hey this is a link google". I would really appreciate it if someone can help, thx! template {% for blog in blog %} <div class="description">{{ blog.description | urlizetrunc:20 }}</div> {% endfor %} -
Rotate native iPhone images based on EXIF info?
Working on a site where users can upload photos. As many of you many know, unedited iPhone photos use an "Orientation" EXIF tag to determine orientation. On my PC, I can't upload .HEIC files, and I can't upload files if I do manage.py runserver localhostIP:8000 due to SSL reasons, so it's pretty difficult to debug. Looking at the EXIF data on iPhone photos it seems like this should rotate the iPhone images properly, but they still upload with the incorrect orientation, and I can't really look at the what EXIF tags iPhone pictures are returning in the backend. im = Image.open(self.content_media) img_exif = im.getexif() for key, val in img_exif.items(): print(val) if "rotate 90 cw" in str(val).lower(): im.rotate(90) if "rotate 180 cw" in str(val).lower(): im.rotate(180) if "rotate 270 cw" in str(val).lower(): im.rotate(270) This is in the save method for one of my models that has media. -
Django - Regex validator does not show error message on wrong input
I used Regex Validator to validate phone_number field, the validator worked perfectly and saved only proper values. If the phone_number is entered in the wrong format, the form is not saved, however the error message is not showing up. I checked this Django regex validator message is not showing up, however I am not sure what I am missing. Here is my code: models.py from django.db import models from django.contrib.auth.models import AbstractBaseUser, BaseUserManager from django.core.validators import RegexValidator # Create your models here. class MyAccountManager(BaseUserManager): def create_user(self, first_name, last_name, username, email, password=None): if not email: raise ValueError('User must have an email address') if not username: raise ValueError('User must have an username') user = self.model( email = self.normalize_email(email), username = username, first_name = first_name, last_name = last_name, ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, first_name, last_name, email, username, password): user = self.create_user( email = self.normalize_email(email), username = username, password = password, first_name = first_name, last_name = last_name, ) user.is_admin = True user.is_active = True user.is_staff = True user.is_superadmin = True user.save(using=self._db) return user class Account(AbstractBaseUser): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) username = models.CharField(max_length=50, unique=True) email = models.EmailField(max_length=100, unique=True) phone_number = models.CharField(validators=[RegexValidator(regex=r'^\+?1?\d{9,10}$', message='Invalid Phone Number', code='invalid_phone_number')], max_length=10, blank=True) # validators should be … -
How to redirect using a view name in Django, class-based views?
I have to redirect from one class-based View to another class-based View. I did it by: return redirect('report') but the suggestion was to redirect by View names. I did try this, but it doesn't work. views.py: class UploadView(View): def get(self, request, *args, **kwargs): Reservation.objects.all().delete() template = "ReportApp/upload.html" return render(request, template) def post(self, request, *args, **kwargs): # try: csv_file = request.FILES['file'] data_set = csv_file.read().decode('UTF-8') # setup a stream which is when we loop through each line we are able to handle a data in a stream io_string = io.StringIO(data_set) next(io_string) for column in csv.reader(io_string, delimiter=',', quotechar="|"): _ = Reservation.objects.update_or_create( reservation_code=column[0], checkin=column[1], checkout=column[2], flat=column[3], city=column[4], net_income=column[5], ) # return redirect('report') return redirect(ReportView.as_view()) upload_view = UploadView.as_view() class ReportView(View): def get(self, request, *args, **kwargs): urls.py: from .views import upload_view, report_view, city_commission_view, error_view from django.urls import path urlpatterns = [ path('upload', upload_view, name='upload'), path('report', report_view, name='report'), path('city_commission', city_commission_view, name='city_commission'), path('error', error_view, name='error'), ] any suggestions how to do this? -
How to add a given number of days to a django DateTimeField
I have a model with a field containing a DateTimeField and a function to calculate a return date based on this DateTimeField. How would I add a given number of days to this???? class MyModel(models.Model): startdate = models.DateTimeField(auto_now_add=True) enddate = models.DateField() def save(self) self.enddate = self.startdate + datetime.timedelta(days=5) super(MyModel, self).save(*args, **kwargs) This however does not work