Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django clear media files every 24hrs
Im creating a project where i require all media to be deleted at a 12am every day so there is a new fresh start. how would i go about doing this within my django project. -
Django view with two forms not posting one
Im trying to use one form to get data for two different models, to do so, I changed my create view get_context_data function like this: class tarea_crear(CreateView): template_name = "crud_tareas/tarea_crear.html" form_class = tareaForm success_url = reverse_lazy('tareas:crear-tarea') def get_context_data(self, **kwargs): context = super(tarea_crear, self).get_context_data(**kwargs) context['form'] = {'audiosForm':audiosForm,'tareaForm':tareaForm} return context This allowed me to call both forms on my template, like this: (Dont worry, I remembered the crfs tag and the form) {{form.tareaForm.as_p}} {{form.audiosForm.as_p}} <input type="submit" value="Crear Tarea"> I also needed to validate some informationfrom the first form, and I did it like this in the view: def form_valid(self, form): titulo = form.cleaned_data['titulo'] if not any(i.isdigit() for i in titulo): return super(tarea_crear, self).form_valid(self, form) return super(tarea_crear, self).form_invalid(self, form) The problem is that when I do the POST of the form, only the first half of the data is actually sent, I know this because I cant call form.cleaned_data['audios'] in the view without getting an error. Any idea how to handle a View with two forms? -
Get previous and next Child objects in ordered Parent queryset (where Children can also be parents)
Say I'm trying to build a library of Books. A Book can have many Chapters. A Chapter can also have many Chapters. (For example, if you look at the Tables of Contents for Les Miserables, you'll see that Les Miserables is divided into volumes, the volumes are divided into books, and the books are divided into chapters. So for our purposes, "Les Miserables" is our Book model and its volumes, books, and chapters are our Chapter model.) What is the best way (or any way!) to generate the correct "previous" and "next" object for any given Chapter? I've decided to use Single Table Inheritance proxy models as outlined in this article: class Text(models.Model): type = models.CharField(max_length=255) title = models.CharField(max_length=255) body = models.TextField(blank=True, null=True) parent = models.ForeignKey( "self", related_name="children", default=None, blank=True, null=True, on_delete=models.CASCADE, ) order = models.IntegerField(blank=True, null=True) def __init__(self, *args, **kwargs): super(Text, self).__init__(*args, **kwargs) # If we don't have a subclass at all, then we need the type attribute to match # our current class. if not self.__class__.__subclasses__(): self.type = self.__class__.__name__.lower() else: subclass = [ x for x in self.__class__.__subclasses__() if x.__name__.lower() == self.type ] if subclass: self.__class__ = subclass[0] else: self.type = self.__class__.__name__.lower() class Meta: ordering = ["order", "pk"] … -
Page blocked by logged in user
My django site authenticates the user using firebase in the login page, which then redirects them to the "home/" (pick.html) after successful login. However when clicking on any link which redirects them to another page (which has the @login_required decorator in views.py), the user gets redirected back to the login page. My views.py: def signIn(request): return render(request, "login.html") def postsign(request): email=request.POST.get('email') passw=request.POST.get('pass') try: user=auth.sign_in_with_email_and_password(email,passw) usercheck = auth.get_account_info(user['idToken']) usercheckjson=json.dumps(usercheck['users']) userjsonload=json.loads(usercheckjson) if userjsonload[0]['emailVerified'] == False: message="Please verify your email before login!" return render(request,"login.html", {"msgg":message}) except: message="Invalid credentials. Try again." return render(request,"login.html", {"msg":message}) session_id=user['idToken'] request.session['uid']=str(session_id) return render(request,"pick.html") @login_required(login_url='login') def home(request): return render(request,'pick.html') My urls.py looks like this: urlpatterns = [ path('home/', v.home, name="home"), path('', v.postsign, name="post_sign"), path('login/', v.signIn, name="login"), path('accounts/logout/', logout_view, name="logout") ] urlpatterns += staticfiles_urlpatterns() My login.html <form action="" method="post"> {% csrf_token %} <div class="illustration"><i class="icon ion-ios-locked-outline"></i></div> <div class="form-group">Email: <input type="email" name="email" autocomplete="off" required></div> <div class="form-group">Code: <input type="password" name="pass" autocomplete="off" required></div> <input class="btn btn-primary btn-block" type="submit" value="Sign In"><br> </form> My pick.html <div class="collapse navbar-collapse" id="navbarResponsive"> <ul class="navbar-nav ml-auto"> <li class="nav-item"> <a class="nav-link js-scroll-trigger" href="{% url 'home' %}">Home</a> </li> <li class="nav-item"> <a class="nav-link js-scroll-trigger" href="{% url 'logout' %}">Logout</a> </li> </ul> </div> Just to note that my settings.py has this included LOGIN_URL="login" LOGIN_REDIRECT_URL="home" The … -
Display Text value as list in django
trying to create a recipe app, however having troubles showcasing the ingredients and instructions as a list. How do I: Ask user to import each recipe and instruction individually? or How do i display a txt.split() within a detailview? class RecipeDetailView(DetailView): model = Recipe Really looking towards any guidance -
Generate list of users whereis_teacher == True django
I have a user model and a profile model, I want to return the list of users whose Is_teacher == true in the profile Here is my model.py class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) is_teacher = models.BooleanField(default=False) Here is my view.py def tutorlist(request): users = User.objects.filter(user.profile.is_teacher == True) return render(request, 'home/tutor_list.html', {'users': users}) How do I return the users whose profile == true? -
DJANGO: how to update a table with values of a model that references other table?
Here's the deal... I'm very new in django. Very, very stupid... I have an app that have a model called by order_product and a view called by order_product too. I have a method that saves values into a table in DB. I want to update other table using the same values that I was using in the save method... Method save() class ProductOrderManager(models.Manager): def get_queryset(self): return super().get_queryset() .select_related('order', 'product') class ProductOrder(models.Model): order = models.ForeignKey('checkout.Order', on_delete=models.SET_NULL, null=True, blank=True) product = models.ForeignKey('attendance.Product', on_delete=models.SET_NULL, null=True, blank=True) reservation_expired = models.BooleanField(default=False) date_request = models.DateField(auto_now_add=True) type = models.CharField(choices=TYPES, max_length=40) category = models.CharField(choices=CATEGORY, max_length=40, null=True, blank=True) price_per_meter = models.DecimalField(max_digits=14, decimal_places=2, default=0.0, verbose_name='Total price') meters = models.DecimalField(max_digits=14, decimal_places=2, default=0.0) square_meters = models.DecimalField(max_digits=14, decimal_places=2, default=0.0) fabric_code = models.CharField(max_length=255, null=True, blank=True) objects = ProductOrderManager() no_joins = models.Manager() def __str__(self): if self.id: return f"{self.id}" return " - " def save(self, *args, **kwargs): if self.type in ['NAME1', 'NAME2','NAME3']: from design.models import Reserve, Print from design.models.reserve import DURATION_TYPE dt = 15 if 'NAME1' == self.type else 90 if not Reserve.objects.filter(print=self.product.print): ###The line bellow is the line that i'm trying to do the update. Print.objects.filter(pk=self.product.print).update(order_type_production_field=self.type) r = Reserve(print=self.product.print, client=self.order.client, duration_type=dt, type_production = self.type) r.save() super(ProductOrder, self).save(*args, **kwargs) Please, help-me with this! -
Django Reverse Match when using AJAX
I am having difficulties in getting my reverse match to work. I am using Django and Ajax to make an asynchronous entry/update in the database. My URLs looks like this: path('overview/<int:year>/<int:month>/<int:day>/$', overview_view, name='overview'), My AJAX call looks like this: var csrf = $("[name=csrfmiddlewaretoken]").val(); $('#location-select1').on('change', function () { var location_selection = this.value; console.log(location_selection) $.ajax({ url: '', type: 'POST', data: { office_id: location_selection, // TODO adjust with office that is selected csrfmiddlewaretoken: csrf }, }); }); $(document).ajaxStop(function () { window.location.reload(); }); My Error message from Django Debugger looks like this: django.urls.exceptions.NoReverseMatch: Reverse for 'overview' with keyword arguments '{'year': '', 'month': '', 'day': ''}' not found. 2 pattern(s) tried: ['overview/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/\\$$', 'overview/$'] What am I doing wrong? Thanks a lot!! -
connection between angular 9 django 2 and oracle DataBase
hello can anyone suggest me a good tutorial or help me get angular and django and oracle connected as soon as possible i have tried searching on youtube but i'didnt find anything useful thanks ! -
Como posso construir uma view que filtra uma lista objetos que depende de outra lista de objetos?
Como posso construir uma view que envia por contexto uma enquete, as alternativas dessa enquete, e o total de votos de cada uma dessas alternativas? É possível realizar tudo em apenas uma view? Meus Models class Enquente(models.Model): enquete_texto = models.TextField(max_length=500) def __str__(self): return self.enquete_texto class Alternativa(models.Model): enquete = models.ForeignKey(Enquente, on_delete=models.CASCADE) nome_alternativa = models.CharField(max_length=50, null=True, blank=True) def __str__(self): return self.nome_alternativa class Voto(models.Model): alternativa = models.ForeignKey(Alternativa, on_delete=models.CASCADE) quant_votos = models.IntegerField(default=0, null=True, blank=True) data_voto = models.DateField(auto_now=True) def __str__(self): return str(self.quant_votos) Minha View def resultado_enquete(request, id): enquete = Enquente.objects.get(pk=id) alternativas = Alternativa.objects.filter(enquete_id=enquete.id) votos = Votos.objects.filter(alternativas) #Só pra exemplificar total_votos = sum(votos.values_list('quant_votos', flat=True)) context = { 'enquete': enquete, 'alternativas': alternativas, 'total_votos': total_votos } return render(request, 'resultado_enquete.html', context) Meu template de forma resumida {{ enquete.enquete_texto }} {% for alternativa in alternativas %} <p>{{ alternativa.nome_alternativa }} - Votos: {{ total_votos }}</p> {% endfor %} -
better way to query objects base on category in django
which way is more efficient? query products base on category in different view and template than the product list is OR query products base on category in the same product list view and template like domainname.com/products?category="cat slug" -
Django form widget: How can I set max value to a value on the database for each item?
class CustomerOrderForm(ModelForm): quantity = forms.IntegerField(widget=forms.TextInput(attrs={'min':0,'max':,'value':0,'type':'number','style':'max-width: 3em'})) class Meta: model = Cart fields = ('__all__') Each item has its own purchasing limits so I want to go to the database and get the purchasing limit for that item and set that as the 'max'. How can do I do it on django forms? I know for html, it's like this, but I have a dynamic value that I need to get from the DB: label for="zip_code">Zip Code:</label> <input type="text" id="zip_code" name="zip_code" placeholder="Five digit zip code" pattern="[0-9]{5}" maxlength="5" required> -
Sudden AWS ECS PermissionError for Django Collectstatic Command
I have an AWS ECS Task that runs a Django (Python) app and a Proxy for static files. Django has a command called collectstatic that copies all the static files into the shared folder that will be served by the proxy. I have been running this setup for a few months without any problems, but around 17 March 2021 I noticed that my deployment was not updating my website. Looking at my Django app logs I saw the error: PermissionError: [Errno 13] Permission denied: '/vol/web/static' I didn't make any configuration changes recently and after a week of experimentation, debug and frustration I noticed that a few other people from the same course that I followed to create this setup started having the exact same issue at the same time (basically a week ago). At this time my only guess would be that something must have changed within AWS itself, but I'm not sure what to look for. Any suggestions will be appreciated, thanks! -
Django - why am i not authenticated after logging in from Axios/AJAX?
I'm building a separated VueJS/Django app where Django will communicate with the Vue frontend using JSON. In order to be able to use the standard session authentication and django-allauth i will deploy the two apps on the same server and on the same port. Here is my problem: after i log in from the Vue app using Axios, i don't receive any response but i notice that a session is created on the db, so i'm assuming that i'm getting logged in. But if i try to reach and endpoint that prints request.user.is_authenticatedi get False, and request.user returns Anonymous, so i'm not logged in anymore. How can i solve this? Here is my Axios code: bodyFormData.append('login', 'root'); bodyFormData.append('password', 'test'); axios({ method: "post", url: "http://127.0.0.1:8000/accounts/login/", data: bodyFormData, withCredentials: true, headers: { "Content-Type": "application/json" }, }) .then(function (response) { //handle success console.log(response); }) .catch(function (response) { //handle error console.log(response); }); I think Django-Allauth supports AJAX authentication on its urls, but i don't understand how to make it return something and how can my Vue app stay authenticated once i submit the Axios form. Any advice is welcome! -
Django extra-views: Is there any way to control how they are displayed?
I want every form in a formset to be one bellow another and maybe to add some extra classes and display those images, but I don't have any idea how to do that. They are displayed like this: I have tried to do something like this in my template but there is an validation error occurring (MaganementForm is missing). {% for formset in inlines %} {% for f in formset%} {{f}} <br> {% endfor %} <hr> {% endfor %} -
Django app: Heroku app crashes after switching to daphne
I'm adding a page for instant chat messaging to my heroku app. It is working on my local web server, but when i push to heroku, my app crashes and I get this error: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. I've tried many solutions proposed on similar stackoverflow questions, but none of them work. It seems that it likely has to do with my Settings.py, Procfile or asgi.py files. asgi.py # mysite/asgi.py import os import django from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter, get_default_application from django.core.asgi import get_asgi_application import chat.routing os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") django.setup() # startapp = get_default_application() #todo: confirm why app doesn't crash if this is commented out... this is called from Procfile application = ProtocolTypeRouter({ # "http": get_asgi_application(), # TODO: CONFIRM http vs https "websocket": AuthMiddlewareStack( URLRouter( chat.routing.websocket_urlpatterns ) ), }) Procfile release: python manage.py migrate web: daphne django_project.asgi:application --port $PORT --bind 0.0.0.0 -v2 worker: python3 manage.py runworker channel_layer -v2 settings.py import django from django.core.wsgi import get_wsgi_application import os import django_heroku # setup(needed for daphne) SECRET_KEY = 'seckey...' #todo: test removing this in own deployment os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") # application = get_wsgi_application() # SECURITY WARNING: keep the secret key used in production secret! #SECRET_KEY = os.environ.get('SECRET_KEY') # SECURITY WARNING: … -
Django boolean annotate returning duplicates
I have the following models: class Institution(models.Model): pass class Headquarter(models.Model): institution = models.ForeignKey(Institution, related_name='headquarters') class Audit(models.Model): headquarter = models.ForeignKey(Headquarter, related_name='audits') And the following query (basically, if an institution has at least one audit then has_visits must be true: Institution.objects.annotate( has_visits=models.Case( models.When(headquarters__audits=None, then=False), default=True, output_field=models.BooleanField() ) ) The problem is that if an institution has 2 audits then the queryset returns duplicate rows. I imagine it has something to do with the joins at the SQL level but I'm not sure how to correct it. I found this answer but I don't think OuterRef is what I'm looking for in my situation. What's the right way to accomplish this? -
Django staticfiles of app does not copying in production after manage.py collectstatic
I'm using Django + Nginx + uwsgi Settings.py : INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'main', ] if DEBUG: STATIC_ROOT = os.path.join(BASE_DIR, "static/") else: STATIC_ROOT = "/var/www/mysite/static/" STATIC_URL = '/static/' if DEBUG: MEDIA_ROOT = os.path.join(BASE_DIR, "media/") else: MEDIA_ROOT = "/var/www/mysite/media/" MEDIA_URL = '/media/' STATICFILES_FINDERS = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] After update a code (in DEBUG = True all works good, static files are loading correct) I'm using python manage.py collectstatic on DEBUG = False in production server and it's collect admin static, but it's not collecting static for "main" app. In debug mode all working good. Checked serving by Nginx - it's working correct. Why "collectstatic" doesn't collect static from "main" app? -
How to remove put method in RetrieveUpdateAPIView from drf-spectacular API documentation?
I have the following view: class PersonalInfos(generics.RetrieveUpdateAPIView): serializer_class = ClientSerializer permission_classes = [IsAuthenticated] def get_queryset(self): """ :return: A QuerySet Object """ return Client.objects.get(user=self.request.user) def get(self, *args): """ :param args: Handled by rest_framework views.dispatch :return: JSON object containing User Personal Data """ queryset = self.get_queryset() serializer = ClientSerializer(queryset) return Response(data=serializer.data) def patch(self, request): """ :param request: request object is sent by the client :return: Json response with the data sent of the body """ client = self.get_queryset() serializer = ClientSerializer(client, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(data=serializer.data, status=200) return Response(data="Unexpected Parameters", status=400) Everything works fine in the view, but the problem is that I am using drf-spectacular and it is showing me a PUT method in the documentation that we won't be needing in the API. My questions is, how can I customize drf-spectacular to not include a PUT method in the documentation? -
How can I perform a parse and edit function on an article when it's saved?
For a Django blog, I'm trying to find a way to parse the content of an article and automatically make edits when certain conditionals are met, then save the article to the db once the function is complete. Alternatively, I could do this from the view, but I figure it's more efficient and possibly easier to code if it's handled this way. What do I need to edit so I can pass this function when an article is saved? How can I parse the contents of the article and make changes when a conditional is met? Would something like the following work (pseudocode): ''' for line in object.content: line = line.rstrip() conditional: line = 'new line' object.content.save() ''' Sorry, not sure why codeblock isn't working. -
Django PWA - Session variables not updating
I am trying to convert a web application into a PWA using a service worker. I am using django session variables within the application for 'cart' functionality. As I add items to the cart session variable, it isn't getting updated while a service worker is running. I assume this is because of the caching. Is there anyway I can prevent this? the service worker being used (not my own): const PRECACHE = 'precache-v1'; const RUNTIME = 'runtime'; // A list of local resources we always want to be cached. const PRECACHE_URLS = [ '/home', '/base', '/menu' ]; // The install handler takes care of precaching the resources we always need. self.addEventListener('install', event => { event.waitUntil( caches.open(PRECACHE) .then(cache => cache.addAll(PRECACHE_URLS)) .then(self.skipWaiting()) ); }); // The activate handler takes care of cleaning up old caches. self.addEventListener('activate', event => { const currentCaches = [PRECACHE, RUNTIME]; event.waitUntil( caches.keys().then(cacheNames => { return cacheNames.filter(cacheName => !currentCaches.includes(cacheName)); }).then(cachesToDelete => { return Promise.all(cachesToDelete.map(cacheToDelete => { return caches.delete(cacheToDelete); })); }).then(() => self.clients.claim()) ); }); // The fetch handler serves responses for same-origin resources from a cache. // If no response is found, it populates the runtime cache with the response // from the network before returning it to the … -
How to include an argument while requesting for api in django?
I am trying to fatch live cricket score from sportsmonk cricket api and cricapi. using Django everything goes fine until I request for any endpoint with unique Id which is stored in a variable. sdd I gives key error always while doing so my request : resL = json.loads(requests.get( 'https://cricket.sportmonks.com/api/v2.0/fixtures/id?api_token').text) here 'id' is a variable for perticular fixture. It works fine while putting any numerical value instead of a variable. Same is the case with this url : resS = json.loads(requests.get('http://cricapi.com/api/fantasySummary/?apikey=123&unique_id=id).text) I not getting what I am doing wrong here. -
Django Rest Framework filter a calculated SerializerMethodField() in ViewSet using filterset_fields
I have a SerializerMethodField that calculates the next execution date adding hours to the last execution time Simplifying the code, a have this model: class Activity(BaseModel): name = models.CharField(max_length=250) last_execution = models.DateTimeField() def __str__(self): return self.name class Meta: ordering = ('name',) And to send to front-end the next excution time, I have this SerializerMethodField() in my Serializer class ActivitySerializer(serializers.ModelSerializer): next_execution = serializers.SerializerMethodField('get_next_execution') class Meta: model = Activity fields = ('id', 'name', 'last_execution', 'next_execution',) def get_next_execution(self, data): # last = ActivityExecute.objects.filter(activity_id=data.id).order_by('-executed_at').first() # time = data.periodicity_type.time_in_hour # if last: # if data.equipment.hour_meter > -1: # return last.executed_at + timedelta(hours=time - (data.equipment.hour_meter - last.hour_meter)) # return last.executed_at + timedelta(hours=time) # # return data.equipment.created_at + timedelta(hours=time) return data.last_execution + timedelta(hours=24) But when I try to add the calculated field to filterset_fields like this: class ActivityViewSet(viewsets.ModelViewSet): permission_classes = (IsAuthenticated,) serializer_class = ActivitySerializer filter_backends = (filters.DjangoFilterBackend,) filterset_fields = { 'id': ['exact'], 'name': ['icontains', 'exact'], 'last_execution': ['exact'], 'next_execution': ['exact'], } def get_object(self): return super(ActivityViewSet, self).get_object() def get_queryset(self): return Activity.objects.all() I got this error: 'Meta.fields' must not contain non-model field names: next_execution There is a way to add the SerializerMethodField() to filterset_fields? Use the method get_queryset will make all my logic in that calculated field (commented) be duplicated. … -
javascript function doesnt work on other objects
I have a strange problem and I'm not sure what might be the problem. As you can see from the image, on click (...) dots another menu is showing up, however, this works only for the first card. The menu is not showing up on the other cards. Any help is appreciated. JS: // Profile Edit Profile Button - POST let cardEdit = document.getElementById('container-posts-card-edit'); cardEdit.addEventListener('click',function(){ let cardOP = document.getElementById('card-edit-options'); if(cardOP.style.display === "none"){ cardOP.style.display = "flex" }else{ cardOP.style.display = "none" } }) django card model: {% if user.post_author.all %} {% for post in user.post_author.all %} <div class="container-posts-card"> <img src = "{{ post.image.url}}" class = "container-post-card-img">s <p class = "container-post-card-caption">{{ post.title }}</p> <div id="container-posts-card-edit"> <span class = "ellipsis-edit"><i class="fas fa-ellipsis-v"></i></span> </div> <div id="card-edit-options"> <a href= "{% url 'update_post' pk=post.pk %}" >Edit</a> <a href= "{% url 'delete_post' pk=post.pk %}" >Delete</a> </div> </div> {% endfor %} {% endif %} -
Not using Promise returned by fetch()
Is (3) a correct way of using then()? I don't need the Promise returned by fetch(), I just want obtain an updated array of emails once fetch() is done. Are my comments for (1) (2) and (3) correct? I tested them by running another then() after each of them, and they seem right. I just want to be sure. function setArchive(email_id, boolArchive) { fetch(`/emails/${email_id}`, { method: 'PUT', body: JSON.stringify({ archived: boolArchive }) }) ##### (Using just one of these at a time) (1) .then(load_mailbox('inbox')) // doesn't wait for fetch() to resolve, returned Promise accessible by the next then() (2) .then((response) => load_mailbox('inbox')) // waits for fetch(), returned Promise NOT accessible by the next then() (3) .then(() => load_mailbox('inbox')) // waits for fetch(), returned Promise NOT accessible by the next then() ##### .then(response => console.log(response)) // (2) and (3) logs 'undefined' Thanks for your help.