Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to use pytest third-party fixtures in my tests?
I am using postmarker in a Django project to send emails. I am using Pytest for testing, and I would like to mock all outgoing emails that I am sending using Postmarker. I found in Postmarker documentation indication for some predefined Pytest fixtures to do so, but I am not sure how I can use them in my Unit tests. Here is the source code of said Pytest fixtures: https://github.com/Stranger6667/postmarker/blob/master/src/postmarker/pytest.py I've ended up just copying those Pytest fixtures code with the mock statements, but was wondering if there is a cleaner way of using them. -
Is there any python library to plot a static map with a specific country in Django?
I have previously used some python libraries like folium, matplotlib etc. These libraries render nice, dynamic maps in Django template, but take a lot of time to load. Also, I want the static map for a specific country where places can be marked with their respective latitudes and longitudes. The map should be something like this: So, is there any python library that renders static maps in Django template with relatively less loading time than those by folium, matplotlib? -
Python Return a Variable in the file
I have tuple variables which are France, Germany. I'm trying to give a value to my bring_cities function and if it's France or Germany, I like to see the France and Germany tuple objects. Is there any shortcut to not use if loops like I did in the below ? France = ( ('Paris', 'Paris'), ('Lyon', 'Lyon'), ) Germany = ( ('Frankfurt', 'Frankfurt'), ('Berlin', 'Berlin'), ) cities = (('', ''),) + France + Germany def bring_cities(country): if country == 'France': return France if country == 'Germany': return Germany ... -
Django: get all permissions on template separated by groups
I have an admin site, I want to edit and add roles to it. It looks like this I can get all the permissions using the POST method by calling every name but I have many permissions and groups. But by using that I can only save one group at a time. Is there a way to get the permissions separated by groups when the save button was clicked? For example: {'Super Admin':['permision1','permision2'], 'Admin':['permision1'], 'CSM':['permision2]} -
Defaultlist in Django
I used defaultlist in my Django App but my output is not good .html {% for key, value in results.items %} <tr> <td>{{ item.key }} </td> <td>{{ item.value }} </td> </tr> {% endfor %} my output: defaultdict(<class 'list'>, {'List of auto blue': ['wolss', 'jaguar', 'bmw', 'tys', 'toyota', 'List of auto red': [jwdwoi, dede, dsd, dsa]}) views.py from django.shortcuts import render from django.core.files.storage import FileSystemStorage import pandas as pd import datetime from datetime import datetime as td import os from collections import defaultdict def home(request): if request.method == 'POST': uploaded_file = request.FILES['document'] uploaded_file2 = request.FILES['document2'] if uploaded_file.name.endswith('.xls'): savefile = FileSystemStorage() name = savefile.save(uploaded_file.name, uploaded_file) name2 = savefile.save(uploaded_file2.name, uploaded_file2) d = os.getcwd() file_directory = d+'\\media\\'+name file_directory2 = d+'\\media\\'+name2 results,output_df =results1(file_directory,file_directory2) return render(request,"results.html",{"results":results,"output_df":output_df,}) return render(request, "index.html") def readfile(uploaded_file): data = pd.read_excel(uploaded_file, index_col=None) return data def results1(file1,file2): results_list = defaultdict(list) if d> t: results_list["List of bleu auto :"].append(s_id) if len(p_index) > 1: results_list["List of red auto:"].append(s_id) results_list what is wrong please ? How i can give an output like this : List of auto blue: -wolss -jaguar -bmw -tys -toyota List of auto red: -jwdwoi -dede -dsd -dsa -
Black formatter in does not work correctly
i work in Django project and in it we use Black formatter but i have problem with this .we have a 'pyproject.toml' file like this picture but with configuration black does not work and i have this error Usage: black [OPTIONS] SRC ... Try 'black -h' for help. Error: Invalid value for '--exclude': Not a valid regular expression: bad escape \e at position 68 (line 7, column 5) but when i delete line 4-18 it work correctly (when i delete exclude part ).what is wrong in exclude part ?can anyone help me? thanks a lot -
Upload images/files in user specific folder in Django
I want to upload images in a folder ( Where folder name is currently logged in username). I am using django login forms. for example: currently user is logged in as 'user99'. now i gave functionality where he can upload his images. and when he upload a image, this should save in my local system in his username folder i.e user99. uploaded image- demo.jpg target dict - Media/user99/01-02-2022.jpg In model.py instead of using instance.title , I want to use instance.user. but when i do that i am getting this error. mysite.models.Image.user.RelatedObjectDoesNotExist: Image has no user. Django version 2.2.5, Python 3.7.11, Please guide me. Thank you my model.py is: def upload_path(instance,title): today = str(date.today()) name = instance.user return f'{name}/{today}.jpg' class Image(models.Model): title = models.CharField(max_length=20, choices=CROP_CHOICES) image = models.ImageField(upload_to=upload_path, blank=True) user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) def __str__(self): return self.title and views.py is: def upload(request): if request.method == 'POST': form = ImageForm(request.POST, request.FILES) if form.is_valid(): form.save() img_obj = form.instance return render(request, 'mysite/upload.html', {'form': form, 'img_obj': img_obj}) else: form = ImageForm() return render(request, 'mysite/upload.html', {'form': form}) forms.py : class ImageForm(forms.ModelForm): class Meta: model = Image fields = ('title', 'image') -
KeyError: at 'role_type' while using request.session in Django 3.0
I am trying to fetch role_type when user is login to the server , when user login immediately i am getting this issue Here i am using Django 3.0 and python 3.7 Here is my views.py def get_context_data(self): dashboard_data = {} is_worker = self.request.session['role_type'] in [ 'Job Worker', 'Job Worker with documents'] dashboard_data['is_worker'] = is_worker ... ... return dashboard_data here is my error traceback Traceback (most recent call last): File "/home/abc/xyz/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/home/abc/xyz/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/abc/xyz/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/abc/xyz/lib/python3.7/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view return view_func(request, *args, **kwargs) File "/home/abc/xyz/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/home/abc/xyz/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch return handler(request, *args, **kwargs) File "/home/abc/xyz/lib/python3.7/site-packages/django/views/generic/base.py", line 158, in get context = self.get_context_data(**kwargs) File "/home/abc/test/dev-1.8/mcam/server/mcam/dashboard/views.py", line 116, in get_context_data is_worker = self.request.session['role_type'] in [ File "/home/abc/xyz/lib/python3.7/site-packages/django/contrib/sessions/backends/base.py", line 64, in __getitem__ return self._session[key] KeyError: 'role_type' How could i solve this error -
Queryset Many to many 'ManyRelatedManager' object is not iterable
I'm using Forms to filter the choices of a many to many relationship to only show the ones following a queryset. This is how my Form looks like class ContractAdminForm(forms.ModelForm): class Meta: model = Contract fields = '__all__' def __init__(self, *args, **kwargs): super(ContractAdminForm, self).__init__(*args, **kwargs) self.fields['client_year_periods'].queryset =ClientYearPeriod.objects.filter( Q(contract_id__isnull=True) | Q(contract_id=self.instance.id) & Q(client__in=self.instance.client_entity)) Error: 'ManyRelatedManager' object is not iterable The issue is being caused by Q(client__in=self.instance.client_entity)) I need to filter the model years using the client legal model that is connected to Client Ops. See here how is it built [ Models class ClientLegal(models.Model): name = models.CharField(max_length=350, verbose_name='Client Name') countries = models.ManyToManyField(Country, blank=True) operations_code = models.ManyToManyField(Client) class ClientYearPeriod(models.Model): client = models.ForeignKey(Client, on_delete=models.PROTECT, null=True) [...] class Contract (models.Model): legal_client= models.ManyToManyField(ClientLegal) client_year_periods = models.ManyToManyField(ClientYearPeriod, blank=True) [...] class Client(models.Model): code = models.CharField(max_length=3, verbose_name='Client Code') name = models.CharField(max_length=250, unique=True) -
"Page undefined of undefined" in the pdf using the wkhtmltopdf library
i have used the wkhtml2pdf library, I want to set the numbering of page on my pdf But i didn't reach my goal yet, it always show me "Page undefined of undefined", Here is the code i have go to tag head and make this properties for the div contain the number of pages: <style> div.footer { display: block; text-align: center; position: running(footer); @page { @bottom-center { content: element(footer) } } } </style> then in the body, I have go and add the div with javascript code: <body style="border:0; margin: 0; min-height: 1123px"> <div id="div-body"> #code </div> <div class='footer'> Page <span id='page'></span> of <span id='topage'></span> <script> var vars={}; var x=window.location.search.substring(1).split('&'); for (var i in x) { var z=x[i].split('=',2); vars[z[0]] = unescape(z[1]); } document.getElementById('page').innerHTML = vars.page; document.getElementById('topage').innerHTML = vars.topage; </script> </div> </body> How i can resolve that, thanks in advance. -
How to convert django.utils.timezone.now() into iso 8601 format string?
2022-02-20T06:07:00-0700 What type of date format is it and how to convert django.utils.timezone.now() to this format? -
there a way to use count on single forloop in django template
Hi I want to know how many elements there are numerically within each cycle I do. I tried {{forloop.counter}} but the problem is that they are not in order but scattered. is there a way to use count on single forloop ie dayone? {% if integratori %} {% for dayone in integratori %} {% if giorno >= dayone.inizio and giorno <= dayone.fine %} <h4 class="text-danger">{{ dayone.count }}</h4> <!-- {% if forloop.counter > 3 %} <p>si</p> {% endif %} --> <div class="integrazione"> <div> <img src="{% static 'img/integratori.svg' %}" class="img-fluid"> <h6 class="m-0">{{ dayone.integratore }}</h6> </div> </div> {% endif %} {% endfor %} {% endif %} -
Django ordering by random when using union
I have one Django app when I'm doing random ordering it's working using order_by('?') But not working when I apply random ordering on union queryset. queryset = (queryset.filter(town__istartswith=location).order_by('?')). union(queryset.filter(Q(town__icontains=location) | Q(post_code__icontains=location) | Q(post_area__icontains=location) | Q(street__icontains=location) | Q(country__icontains=location) | Q(agency__operating_areas__icontains=location)).order_by('?')) In my case, if I search with city Helsinki then if it comes in city field then its record display first but in a random order, another record also comes from other fields it is also set random order. For example*: Searching with "Helsinki" city. Then there are four records in which agency city is "Helsinki" then it will come always first but in random order all time and for other record come in random order. [{ "id": 1, "city": "Helsinki", "Name": "Abhishek", }, { "id": 2, "city": "Helsinki", "Name": "Urvesh", }, { "id": 3, "city": "Helsinki", "Name": "Dhruvil", }, { "id": 4, "city": "Helsinki", "Name": "Akshat", }, { "id": 5, "town": "Helsinki", "Name": "Akshat", }, { "id": 6, "country": "Helsinki", "Name": "Akshat", }, { "id": 7, "street": "Helsinki", "Name": "Akshat", }, { "id": 8, "town": "Helsinki", "Name": "Akshat", }] Please help me in this how can I do a random search in the union, Please give me the best solutions … -
Checking if a field in model is modified and creating instance of another model
I have two models Project Model class Project(models.Model): name = models.CharField(max_length=200) workflow = models.ForeignKey("WorkflowType", null=True, blank=True, on_delete=models.SET_NULL) created_on = models.DateTimeField(auto_now_add=True) id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True, primary_key=True) def __str__(self): return self.name Workflow Instance Model class WorkflowInstance(models.Model): workflow_step = models.ForeignKey('WorkflowStep', null=True, blank=True, on_delete=models.CASCADE) project = models.ForeignKey('Project', null=True, blank=True, on_delete=models.SET_NULL) I want to check if the value of workflow field in "Project" models is added or changed for a particular project. I am approaching the problem in following manner: Checking if the previous and the new value of the "workflow" field in a project are different. If yes (modifies), then create the new instance of a project. @receiver(pre_save, sender=Project) def projectToBeUpdated(sender, instance, **kwargs): if instance.id is None: pass else: previous = Project.objects.get(id=instance.id) if previous.workflow != instance.workflow: print("workflow value modified. Please create a WorkflowInstance") Problem: The comparison for previous and new value of the "workflow" field are happening in "pre_save" signal. But my new instance creation for workflowInstance is to be created in "post_save" signal. How can I do this? Also, ideally I would like to store the previous value of workflow field in "pre_save" and get the new value of the field in "post_save". Reason being, save() method might fail for any reason, … -
File "C:\django\2proj\authentication\utils.py", line 2, in <module> from six import text_type ModuleNotFoundError: No module named 'six'
Am trying to import module six in my utils.py but its not working from django.contrib.auth.tokens import PasswordResetTokenGenerator from six import text_type from django_six import text_type class AppTokenGenerator(PasswordResetTokenGenerator): def _make_hash_value(self, user, timestamp): return (text_type(user.is_active) + text_type(user.pk) + text_type(timestamp)) account_activation_token = AppTokenGenerator() but i get this error " File "C:\django\2proj\authentication\utils.py", line 2, in from six import text_type ModuleNotFoundError: No module named 'six'" Am using django 4.0.2 -
Adding new fields to the Object Change History model (Django)
I'm writing my todo in django. I want to add not just the entry "task changed" to the "history" tab, but also two additional fields: "was" - "became". How can I do this? -
How to create range slider filter in django
I want to create a range slider filter in Django where If I change the price from the slider by increasing the range, it should show the servers that have the same price in order. but I tried to create that slider also I researched on google, StackOverflow I couldn't find the answer between I'm using the API instead of models stuff Here's the website sample: https://www.hetzner.com/sb?price_from=30&price_to=380 my code: def index(request): headers = { "User-Agent": "...", "Accept-Encoding": "*", "Connection": "keep-alive" } url = "https://www.hetzner.com/a_hz_serverboerse/live_data.json" response = requests.get(url, headers=headers) data = response.json()['server'] p = Paginator(data, 20) pn = request.GET.get('page') page_obj = p.get_page(pn) context = { 'data': data, 'page_obj': page_obj, } return render(request, 'index.html', context) -
ImportError: Could not import 'authentication.backends.JWTAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'
I am following the example given here : https://www.django-rest-framework.org/api-guide/settings/#accessing-settings. Once I open the django shell using python manage.py shell and run the following command from rest_framework.settings import api_settings print(api_settings.DEFAULT_AUTHENTICATION_CLASSES) I am getting the following error Traceback (most recent call last): File "C:\django_project\.venv\lib\site-packages\rest_framework\settings.py", line 177, in import_from_string return import_string(val) File "C:\django_project\.venv\lib\site-packages\django\utils\module_loading.py", line 30, in import_string return cached_import(module_path, class_name) Traceback (most recent call last): File "<console>", line 1, in <module> File "C:\django_project\.venv\lib\site-packages\rest_framework\settings.py", line 225, in __getattr__ val = perform_import(val, attr) File "C:\django_project\.venv\lib\site-packages\rest_framework\settings.py", line 168, in perform_import return [import_from_string(item, setting_name) for item in val] File "C:\django_project\.venv\lib\site-packages\rest_framework\settings.py", line 168, in <listcomp> return [import_from_string(item, setting_name) for item in val] File "C:\django_project\.venv\lib\site-packages\rest_framework\settings.py", line 180, in import_from_string raise ImportError(msg) ImportError: Could not import 'authentication.backends.JWTAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ModuleNotFoundError: No module named 'authentication.backends' Does someone know what's going on? P.S: I have a very big django project which is failing with the same error, hence I am pinpointing to only the main setting which is failing in this example. -
Django OneToOneField Structure
I have been researching and looking through all the docs but I am still a bit confused, I think maybe because there are multiple ways to use the OnToOneField. I have 4 models, Pregame, Ingame, Postgame and Game. And I want 'Game' to contain the other three models. As of right now it looks like this... class Pregame(models.Model): game_id = models.CharField(max_length=10) other fields... def __str__(self): return str(self.game_id) class Ingame(models.Model): game_id = models.CharField(max_length=10) other fields... def __str__(self): return str(self.game_id) class Postgame(models.Model): game_id = models.CharField(max_length=10) other fields... def __str__(self): return str(self.game_id) class Game(models.Model): game_id = models.CharField(max_length=10) pregame = models.OneToOneField( Pregame, on_delete=models.CASCADE, null=True) ingame = models.OneToOneField( Ingame, on_delete=models.CASCADE, null=True) postgame = models.OneToOneField( Postgame, on_delete=models.CASCADE, null=True) def __str__(self): return str(self.game_id) I am using OnToOne because each Game will only have one Pregame, Ingame and Postgame and the other three models will only belong to one Game. I have a couple questions I am confused about. Will I be able to have a Game object if one of the other model objects doesn't exist yet? Like if there is a Pregame but no Ingame or Postgame, will Game still exist with just Pregame inside of it? I seen a couple videos where they did a … -
django app pytest Key error while testing
I have a problem regarding testing one of views in my django app. I use pytest. Here is the view i'm gonna test: class IngredientDetailsView(View): def get(self, request, id): ingredient = Ingredient.objects.get(id=id) return render(request, 'diet_app/ingredient_details.html', {'ingredient': ingredient}) and it's model: class Ingredient(models.Model): name = models.CharField(max_length=50, unique=True) nutrient = models.IntegerField(choices=NUTRIENTS) glycemic_index = models.IntegerField(choices=GLYCEMIC_INDEX) Here is my fixture and test: @pytest.fixture def example_ingredient(): return Ingredient.objects.create( name='apple', nutrient=2, glycemic_index=2 ) @pytest.mark.django_db def test_ingredient_view(client, example_ingredient): response = client.get(f'/ingredient_details/{example_ingredient.id}/') assert response.status_code == 200 assert response.context['name'] == 'apple' assert response.context['nutrient'] == 2 assert response.context['glycemic_index'] == 2 I still face KeyErrors: FAILED diet_app/tests.py::test_ingredient_view - KeyError: 'name' and don't know why. I'm a fresher using pytest and still learning. I suppose the problem are asserts fields in my test because when i removed field 'name' key error changed to 'nutrient' -
Paginator won't paginate
I use Paginator for paginate my posts, i have no error, and i have the list of page in the bottom of the posts, but: 1.Post doesn't paginate correctly, i have set 5 i have more. 2. When i click on the 2 second page and 3 and etc, i have the same results of posts, i have no the next page with nexts posts. This is my view code: def post_all(request): posts = Post.objects.filter().order_by('-published_date') paginator = Paginator(posts, 5) page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) categories = PostCategory.objects.all().annotate(posts_count=Count('post')) return render(request, 'front/blog/post_all.html', {"posts":posts, "categories":categories,"page_obj":page_obj}) Thank u. -
How to limit number of requests user can make in a month using Django rest framework throttling?
I was successfully able to throttle user requests on basis of day, minute, second. But I am not sure what would be the best way to throttle requests on monthly basis i.e. lets say I want 1000 request/month for a user I can use day for achieving the goal like this 34/day, It will limit the requests per day so the user will have to make 34 requests per day to reach the limit, but what I want to give the user liberty to utilize their requests even in a single day or at once. I am using ScopeRateThrottle 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.throttling.ScopedRateThrottle' ], 'DEFAULT_THROTTLE_RATES': { 'subscription_monthly': '2/monthly', } I'll be really thankful for quick response -
How to create and handle a related field in django with react?
I have created 2 models - Tags and Startups. Startups has a tags field with a ManytoMany relationship with Tag. Models.py file - from django.db import models from django_extensions.db.fields import AutoSlugField from django.db.models import CharField, TextField, DateField, EmailField, ManyToManyField class Tag(models.Model): name = CharField(max_length=31, unique=True, default="tag-django") slug = AutoSlugField(max_length=31, unique=True, populate_from=["name"]) def __str__(self): return self.name class Startup(models.Model): name = CharField(max_length=31, db_index=True) slug = AutoSlugField(max_length=31, unique=True, populate_from=["name"]) description = TextField() date_founded = DateField(auto_now_add=True) contact = EmailField() tags = ManyToManyField(Tag, related_name="tags") class Meta: get_latest_by = ["date_founded"] def __str__(self): return self.name My serializers.py file - from rest_framework.serializers import HyperlinkedModelSerializer, PrimaryKeyRelatedField, ModelSerializer from .models import Startup, Tag class TagSerializer(HyperlinkedModelSerializer): class Meta: model = Tag fields = "__all__" extra_kwargs = { "url": { "lookup_field": "slug", "view_name": "tag-api-detail" } } class StartupSerializer(HyperlinkedModelSerializer): tags = TagSerializer(many=True, read_only=True) class Meta: model = Startup fields = "__all__" extra_kwargs = { "url": { "lookup_field": "slug", "view_name": "startup-api-detail" } } My viewsets.py file - from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet from .serializers import TagSerializer, StartupSerializer from .models import Tag, Startup from rest_framework.decorators import action from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_200_OK, HTTP_204_NO_CONTENT from django.shortcuts import get_object_or_404 class TagViewSet(ModelViewSet): queryset = Tag.objects.all() serializer_class = TagSerializer lookup_field = "slug" class StartupViewSet(ModelViewSet): serializer_class = … -
why my django app is not formatted using AWS S3 Bucket?
I have configured AWS S3 to handle the static files and I can see the static folder in my bucket and also its sub-folders such as admin. I don't know what is wrong and why it is not formatting the site with css, images and videos i have in my static file. the static folder was added so why I can't see any effect in the site? -
Need to fetch the column names(field names) along with the values in raw sql query
views.py def view(request): cursor = connection.cursor() with open('D:\Project-Management-Tools\Project-Management-Tools\query.sql','r') as inserts: query = inserts.read() cursor.execute(query) row = cursor.fetchall() return Response(row) I have tried a raw query by inserting a sql file in cursor function. However I am getting the values alone as a response and I need to get the fields name along with the values in the response. Kindly help me to solve this issue.