Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How do I get my wsgi module recognized when starting Python via docker?
I'm using Django 3.2 and Python 3.9. I have this directory structure - docker-compose.yml + web - Dockerfile - manage.py - requirements.txt + venv - ... + directory - settings.py - wsgi.py My wsgi.py file looks like the below import time import traceback import signal import sys import pathlib from django.core.handlers.wsgi import WSGIHandler import os # add the hellodjango project path into the sys.path sys.path.append(pathlib.Path(__file__).parent.parent.parent.absolute()) # poiting to the project settings os.environ.setdefault("DJANGO_SETTINGS_MODULE", "directory.settings") from django.core.wsgi import get_wsgi_application try: application = get_wsgi_application() except Exception: # Error loading applications if 'mod_wsgi' in sys.modules: traceback.print_exc() os.kill(os.getpid(), signal.SIGINT) time.sleep(2.5) My docker-compose.yml Python section looks like this web: restart: always build: ./web ports: # to access the container from outside - "8000:8000" env_file: .env environment: DEBUG: 'true' command: /app/run_server.sh volumes: - ./web/:/app depends_on: - postgres The "run_server.sh" script looks like #!/bin/bash cd /app .venv/bin/activate python manage.py runserver 0.0.0.0:8000 but when I run "docker-compose up," I get this error complaining about not being able to find the wsgi module web_1 | Exception in thread django-main-thread: web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.9/site-packages/django/utils/module_loading.py", line 20, in import_string web_1 | return getattr(module, class_name) web_1 | AttributeError: module 'directory.wsgi' has no attribute 'application' web_1 | … -
How to keep track of anonymous session in Django and React
I have a cart in django that uses session to track the user. The cart is created when the user adds an item to cart, also checks if the cart existed by session id. But when I run an add to cart mutation in react, Django creates a new cart every time. -
DRF Create new object and link to (but not create) it's related items (nested serializer)?
I'm trying to link multiple items (subdomains) to an item being created (evidence). My form submits okay - but I'm trying to figure out the 'best' way to go about this. According to the docs I have to override the create method - but their example shows them 'creating' the related objects. I don't want to do that. I want to just just add those related items to the piece of evidence I am creating (to create the relationship) Here are my serializers: class SubdomainSerializer(serializers.ModelSerializer): class Meta: model = Subdomain fields = [ "id", "domain", "short_description", "long_description", "character_code", ] class EvidenceSerializer(serializers.ModelSerializer): """ """ created_by = serializers.HiddenField( default=serializers.CurrentUserDefault() ) updated_by = serializers.HiddenField( default=serializers.CurrentUserDefault() ) absolute_url = serializers.SerializerMethodField() created_by_name = serializers.SerializerMethodField() updated_by_name = serializers.SerializerMethodField() subdomains = SubdomainSerializer(many=True) class Meta: model = Evidence fields = "__all__" extra_kwargs = { "subdomains": { "error_messages": { "null": "This field is required.", "blank": "This field is required.", } }, } def get_absolute_url(self, obj): return obj.get_absolute_url() def get_created_by_name(self, obj): return obj.created_by.full_name def get_updated_by_name(self, obj): return obj.updated_by.full_name def create(self, validated_data): subdomains_data = validated_data.pop("subdomains") evidence = Evidence.objects.create(**validated_data) for subdomain in subdomains_data: # This is where I want to add the subdomains to the evidence - not create ones - how … -
How to obtain country from a column in a database python
Actually i am using pygeoip from obtain the country from the ip address and it works but now i want to obtain the country from a data in a database, im using django so after i obtain the ip and the country from each data i want to save the country in a new column in the actually database anyone can help me please :c -
Can I OR Exists subqueries in Django?
I want to be able to or two Exists subqueries. This is the best solution I could come up with: def my_filter(self, queryset, name, value): model_a_qs = ModelA.objects.filter(id=OuterRef('a_id')) model_b_qs = ModelB.objects.filter(id=OuterRef('b_id')) return queryset.annotate( has_a=Exists(model_a_qs), has_b=Exists(model_b_qs), has_a_or_b=Case( When(has_a=True, then=Value(True)), When(has_b=True, then=Value(True)), default=False, output_field=BooleanField(), ), ).filter(has_a_or_b=value) Does anyone know a better way to do this? Thank you in advance! -
django-summernote - I want Image url in .png format instead of Base64
This is the url summernote geenrates. <img src="data:image/jpeg;base64,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 It should be: <img src="/images/blah/blah.jpg."> This is the summernote code i have: <textarea id="summernote" name="editordata"></textarea> <script> $('#summernote').summernote({ placeholder: 'Hello', tabsize: 2, height: 100 }); </script> -
Run MQTT client inside Django
On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 Subscribed: application/13/device/0090000000000003/status On Connect rc: 0 I am trying to run the MQTTC client inside my Django application, and I run this function in APP config , but on App start why is it calling call-backs multiple times that stays in question, I want this function to be executed only once , how do i prevent this behaviour of Django , i tried using thread pool but same result mqttc = mqtt.Client(clientId) mqttc.on_connect = on_connect mqttc.on_subscribe = on_subscribe mqttc.on_message = on_message mqttc.connect(broker, port=port) def check_device(instance=None): global topic_list print(' Mqttc broker called ') logging.basicConfig(level=logging.DEBUG) mqttc.loop_start() class DashboardConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'dashboard' def ready(self): from .schedulars import scheduler,check_device # scheduler.start() # executor = threadpool(max_workers=2) # executor.submit(check_device) check_device() -
Desired output is not coming in django
I was trying to make a poll app in django , so for that I used bootstrap for frontend . I copied navbar text from there and copied in index.html file and I linked all the URLs to each but after running the server I'm getting such kind of output. Can anyone help me , how can I avoid this problem ? Thanks in advance -
Django REST Framework how to aggregate from related models
I have 3 models: class Book_type(models.Model): type_name = models.CharField(max_length=40,unique=True) class Author(models.Model): author_id = models.AutoField(unique=True, primary_key=True) author_name = models.CharField(max_length=30, unique=True) class Book(models.Model): book_id = models.AutoField(unique=True, primary_key=True) book_type = models.ForeignKey(book_type, on_delete=models.CASCADE, to_field='type_name') book_value = models.PositiveIntegerField(default=0, verbose_name='book value') book_unit = models.CharField(max_length=100, blank=True, verbose_name='book unit') book_time = models.DateTimeField(auto_now=False, verbose_name='book time') author = models.ForeignKey(verbose_name='author', to='author', to_field='author_id', on_delete=models.CASCADE) Both Book_type and Author are foreign keys to Book. Now in the views.py I want to return the following aggregate statistics for each author: mininum book value, grouped by author and book type average book value, grouped by author and book type And annotate each set of aggregate statistics with the author's ID and name. Code: from .serializers import BookSerializer,AuthorSerializer,Book_typeSerializer class AggregateListView(ListAPIView): queryset = Book.objects.all() serializer_class = BookSerializer def get_queryset(self): mininum_qs = self.get_queryset().min(book_value) average_qs = self.get_queryset().average(book_value) return new_qs.union(mininum_qs, average_qs, all=True) While coded here I totally no clew how to continue, any friend can help ? -
Integrated dash-app (using django_plotly_dash) does not get enough space
I am integrating a dash-app into django for the first time. I use django_plotly_dash for this. I think I am doing it the standard way: urls.py from django.urls import path, include from . import views urlpatterns = [ path('trial',views.trial,name='trial'), ] views.py from django.shortcuts import render from django.http import HttpResponse import my_first_dash_plotly_app.simple_dash_app def trial(request): return render(request, 'my_first_dash_plotly_app/trial.html') simple_dash_app.py import dash_core_components as dcc import dash_html_components as html import plotly.express as px import pandas as pd from django_plotly_dash import DjangoDash app = DjangoDash('SimpleExample1') # assume you have a "long-form" data frame # see https://plotly.com/python/px-arguments/ for more options df = pd.DataFrame({ "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"], "Amount": [4, 1, 2, 2, 4, 5], "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"] }) fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group") app.layout = html.Div(style={}, children=[ dcc.Graph( id='example-graph-2', figure=fig ) ]) trial.html {%load plotly_dash%} {%plotly_app name="SimpleExample1"%} This is just the standard-example from the plotly/dash-introduction. It works somehow but looks really ugly. You have to scroll to see the plot completely. If I remember correctly I have seen this behaviour before outside of the django-world. Is there an easy fix? Should I file a bug-report on that or is it just me doing something completely wrong? I … -
Django - get autocomplete search result from 2 models
I have written a function that enables users to look for titles in my Product and Article model I am using trevoreyre autocomplete-js library to handle autocomplete live search. The problem I am currently facing is that I want to include titles from Article and Product models in my autocomplete search bar. From what I read JsonResponse doesn't take context as a parameter. My question is how can I include the title field from both models without context parameters? views.py from product.models import Product from articles.models import Article from django.db.models import Q from django.contrib.auth.decorators import login_required from django.shortcuts import render from django.http import JsonResponse @login_required def search_address(request): title = request.GET.get('title') payload = [] if title: address_objects = Article.objects.filter(title__icontains=title) for address_object in address_objects: payload.append(address_object.title) return JsonResponse({'status':200, 'data': payload}) @login_required def search_results(request): query = request.GET.get('q') article = Article.objects.all() product = Product.objects.all() if query is not None: lookups = Q(title__icontains=query) article = Article.objects.filter(lookups) product = Product.objects.filter(lookups) context = { 'article_list': article, 'product_list': product } return render(request, 'search/search_view.html', context) base.html <!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <meta name="description" content="Starlab platform" /> <meta name="author" content="Pathfinder 23" /> <title>Starlab - {% block title %}{% endblock %}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> … -
Django signals not working, tried every possible solution
signals.py @receiver(user_logged_in, sender=User) def when_user_logs_in(sender, request, **kwargs): print('user_logs_signal is called') LoggedInUser.objects.get_or_create(user=kwargs.get('user')) @receiver(user_logged_out, sender=User) def when_user_logs_out(sender, request, **kwargs): print('user logs out signal iscalled') LoggedInUser.objects.get_or_create(user=kwargs.get('user')).delete() models.py class LoggedInUser(models.Model): user = models.OneToOneField(User, related_name='logged_in_user', on_delete =models.CASCADE, null=True, blank=True) session_key = models.CharField(max_length=32, null=True, blank=True) def __str__(self): return self.user.username apps.py class AccountsConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "accounts" def ready(self): import accounts.signals I have done anything that i found to solve signals now working but it didnt solve i have even added "accounts.apps.AccountsConfig" in my settings.py but still it not firing i am currently logged_in and using jwt based authentication , needs help -
Django: Submitting two forms on one page and using data from first form in second form
so currently I have a web page where the user can select stats they want and then generate a march madness bracket. If they decide they like the bracket they can name it and save it. I want to save the bracket as well as the stats chosen. My issue is that I have two forms on one page, so when the user presses the save button, the stats variables are all empty since their values were assigned in the request for the other form. Basically the second form clears all data from the first form, but I want to use data from the first form in the second form. Here is my code. HTML: <form method="GET"> {% csrf_token %} <label for="stat1">Most Important Stat:</label> <select name="stat1" id="stat1"> <option value="Stat 1">Stat 1</option> <option value="Stat 2">Stat 2</option> <option value="Stat 3">Stat 3</option> <option value="Stat 4">Stat 4</option> <option value="Stat 5">stat 5</option> </select> <label for="stat2">Second Most Important Stat:</label> <select name="stat2" id="stat2"> <option value="Stat 1">Stat 1</option> <option value="Stat 2">Stat 2</option> <option value="Stat 3">Stat 3</option> <option value="Stat 4">Stat 4</option> <option value="Stat 5">stat 5</option> </select> <label for="stat3">Third Most Important Stat:</label> <select name="stat3" id="stat3"> <option value="Stat 1">Stat 1</option> <option value="Stat 2">Stat 2</option> <option value="Stat 3">Stat 3</option> <option value="Stat 4">Stat … -
400. That’s an error. Your client has issued a malformed or illegal request. That’s all we know - Google App Engine Django App
I have been programming an API using Django and djangorestframework for deployment in Google App Engine. The API is basically a package registry, so you can create, update, get, and delete packages with the API. All the endpoints seem to work except for one. The only endpoint that doesn't work is one that display a paginated list of all packages in the online registry. All the endpoints are working, but for some reason, when I hit the specific endpoint '/packages/', GCP gives me the error 400. That’s an error. Your client has issued a malformed or illegal request. That’s all we know When I run the application locally on my computer, all the endpoints work perfectly. The application only stops working for that specific route when I deploy it on Google App Engine.The API payload should be: [ { "Name": "*" } ] I am completely lost on this one and would appreciate any help. VIEWS.py import django.db.utils from rest_framework.decorators import api_view from rest_framework.response import Response from django.core.paginator import Paginator, EmptyPage import registry.models from .serializers import * from .models import * # Create your views here. @api_view(['GET']) def apiOverview(request): api_urls = { 'List': '/package-list/', 'Create': '/package-create/', 'Update': '/package-update/', 'Delete': '/package-delete/', … -
While Calling Django Api On React Error is No 'Access-Control-Allow-Origin' header is present on the requested resource
Anyone Please Help me I need to submit my project this week I am getting a problem for a week. Error is :--> Access to XMLHttpRequest at 'http://127.0.0.1:8000/list/single/2' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Please Help me 😢 -
Update or create bunch of rows - Django
I'm trying to find the most efficient way to update or create a bunch of rows (around 10K to 30k) from a json in my database. I'm grabbing a json with the data I want to put in my database. I tried Django atomic transactions but it is still very slow. I'm currently using this library but it is very slow: it takes around 1 hour to update 15k rows. But this is the shortest way I've found today. I read a lot of questions and articles but I can't find a fastest way to do it. This is how my update methods look like (using the library): def update_data_in_db(data): objs = [] for item in data: try: objs.append(Item( id=item['id'], name=item.get('name'), slug=item.get('slug'), except Exception as err: logger.exception(err) print(err) try: Currency.objects.bulk_update_or_create(objs, ['name', 'slug'], match_field='id') except Exception as err: print(err) return [obj.id for obj in objs] -
Django add filter to ForeignKey drop-down
In my Django application I have Items and Locations. Each Item could be linked to a Location. On the Item view, I want that the user can only select Locations he owns. Given the following models: from django.conf import settings from rules.contrib.models import RulesModel # Create your models here. class Location(RulesModel): name = models.CharField(max_length=200) description = models.TextField(blank=True) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) class Item(RulesModel): name = models.CharField(max_length=200) description = models.TextField(blank=True) location = models.ForeignKey( Location, on_delete=models.SET_NULL, null=True, blank=True ) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) How can I specify a filter to restrict the Locations available in the view? from django.views import generic from django.contrib.auth.mixins import LoginRequiredMixin # Create your views here. from .models import Item class ItemCreateView(LoginRequiredMixin, generic.CreateView): model = Item fields = [ "name", "description", "location", "owner", ] success_url = reverse_lazy("item:item-list") def get_initial(self): return {"owner": self.request.user.id} I've tried to add def __init__() to the view and specifying limit_choices_to in the model, both without success. Any other idea? -
Module 'module' has no attribute 'celery'
I need to use Celery at my project but i got some errors when i try to install at my project. I've read the Celery's doc for Django, but i've been taking the same error. My tree project : 📂 src 📄 __init__.py 📄 celery.py 📂 core 📄 __init__.py 📂 project_auth 📄 __init__.py 📄 serializer.py 📄 tasks.py 📄 settings.py 📄 urls.py 📄 wsgi.py 📄 texto.md src/_init_.py : # This will make sure the app is always imported when # Django starts so that shared_task will use this app. from .celery import app as celery_app __all__ = ('celery_app',) src/celery.py : import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings') app = Celery('src') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) @app.task(bind=True) def debug_task(self): print(f'Request: {self.request!r}') src/settings.py : INSTALLED_APPS = [ #Django apps : 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #Meus apps : 'src.core', 'src.project_auth', 'src.product', #Apps de terceiros : 'django_celery_results', 'rest_framework', "rest_framework.authtoken", ] CELERY_CONFIG = { "CELERY_TASK_SERIALIZER": "json", "CELERY_ACCEPT_CONTENT": ["json"], "CELERY_RESULT_SERIALIZER": "json", "CELERY_RESULT_BACKEND": None, "CELERY_TIMEZONE": "UTC", "CELERY_ENABLE_UTC": True, "CELERY_ENABLE_REMOTE_CONTROL": False, } docker-compose.yml: version: "3.8" services: web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - 8000:8000 depends_on: - db tty: true container_name: ${COMPOSE_PROJECT_NAME}_app db: container_name: ${COMPOSE_PROJECT_NAME}_db image: postgres:14 environment: … -
How to solve "IndexError at / list index out of range" when there is an empty list
I was wondering what the simplest way is to return null in Django when there is an empty list coming from an API "leverage_buy": [],: my views.py from django.shortcuts import render from meal_app.models import Kraken import requests def get_krakens(request): all_krakens = {} url ='https://api.kraken.com/0/public/AssetPairs' response = requests.get(url) data = response.json() for i in data['result'].values(): kraken_data = Kraken( altname = i['altname'], leverage_buy = i['leverage_buy'][0], ) kraken_data.save() my models.py from django.db import models class Kraken(models.Model): altname = models.CharField(max_length=50, blank = True, null = True) leverage_buy = models.IntegerField(blank=True, null=True) Postman response { "error": [], "result": { "1INCHEUR": { "altname": "1INCHEUR", "leverage_buy": [], I researched and tried thoroughly many similar cases here, but none had the example of an API empty list. -
Django querySet order by date closest to today
I have a simple view that returns event dates and then is presented within a table on my page. I need to order the data by the date closest to the current date only for dates in the future, not for dates that have passed. This is my view def dashboard_view(request): now = datetime.datetime.now().date game_list=Game.objects.all() event_list = Event.objects.all().order_by('event_date') return render(request,"dashboard.html",{"game_list":game_list, "event_list": event_list}) I was thinking of using datetime.datetime.now() but I can't figure out the logic/syntax to do this. Thanks -
Search filter using Vuejs and Django
I am doing my website search-filter part using Django rest-framework and VueJs. I used django-filter. My problem is that I don't know how to set url or change on Vue when data is changed for example if I input max-price, url be like that http:/.../api/v1/search/?max_price=150 and when I check is-online status to true url should be changed to http:/.../api/v1/search/?max_price=150&is_online=true. Is there any approach for this? Thanks in advance filters.py from django_filters import rest_framework as filters from .models import Announcement class AnnouncementFilter(filters.FilterSet): min_price = filters.NumberFilter(field_name="price", lookup_expr="gte") max_price = filters.NumberFilter(field_name="price", lookup_expr="lte") class Meta: model = Announcement fields = ['subcategory', "is_online", "owner"] views.py from django_filters import rest_framework as filters from .filters import AnnouncementFilter class AnnouncementFilterList(generics.ListAPIView): queryset = Announcement.objects.all() serializer_class = AnnouncementSerializer filter_backends = [filters.DjangoFilterBackend] filterset_class = AnnouncementFilter Search.vue export default { name: "Search", data() { return { announcements: [], is_online: false, min_price: "", max_price: "", ... } }, methods: { async search() { await axios .get(`api/v1/announcements/search/?max_price=${this.max_price}`) .then(response => { this.announcements = response.data console.log(response.data) }) .catch(error => { console.log(error) }) } That's what I did so far.. -
How send value from django html to django views
I want to make a section with goods in which you can "+" and "-" increase or decrease the quantity of goods And then, depending on the amount, "sell" it. Now we need to pass the value {{ el.id }} to django views My code: html: <form method="POST"> {% csrf_token %} {% for el in form3 %} {% if el.count > 0 %} [ {{ el.count }}шт. ] <br> [ {{ el.title }} ]<br> <a id="minus{{ el.id }}" href="#"><b>[ - ]</b></a> <span id="value{{ el.id }}">0</span> <a id="plus{{ el.id }}" href="#"><b>[ + ]</b></a> <br> Function where i + or - from count <script> $(function(){ var valueElement = $('#value{{ el.id }}'); function incrementValue(e){ valueElement.text(Math.max(parseInt(valueElement.text()) + e.data.increment, 0)); return false; } $('#plus{{ el.id }}').bind('click', {increment: 1}, incrementValue); $('#minus{{ el.id }}').bind('click', {increment: -1}, incrementValue); }); </script> {% endif %} {% endfor %} </form> how can i get the values with "span id=value{{ el.id }}" -
How to return a separate, related value from a Django form?
I am working on a simple appointment scheduling system where customers can bring their vehicle in for service. Customers can have multiple vehicles and have a login with all of their vehicle information saved. Most of the customers track their vehicle by a 'unit' number. When they fill out the form, they select the branch (service center) where they want the work performed, the date, the timeslot, and they select their vehicle based on the unit number. On the backend, the unit and VIN are tied together. However, currently when they submit a service request, only their unit number comes through. I need the associated VIN to come through automatically. I have tried to return separate values from the vehicle model (I can't figure that out), I've tried to return them with f' but that returns it as one string with the unit and VIN together. I've spent probably 3-4 hours trying to get this figured out. Any help is appreciated!! Models.py class Vehicle(models.Model): unit = models.CharField(max_length=10, help_text="Unit number for the vehicle") vin = models.CharField(max_length=17, unique=True, validators=[MinLengthValidator(17)], help_text="VIN of the vehicle") engine = models.ForeignKey(Engine, on_delete=models.SET_NULL, null=True) engineMfg = models.ForeignKey(engineMfg, on_delete=models.SET_NULL, null=True) sold_to = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True) mileage = models.IntegerField(default=0, … -
How to change the name of a field generated with a function in list_display in admin.py
i have a modelAdmin in admin.py. i want to display a value which i generated from a function in the model. here is the code: admin.register(Salary) class Salary(admin.ModelAdmin): list_display=('Category','BasicPA','BasicBM','Grade','Step','total') def BasicBM(self,instance): return instance.get_BasicBM() def total(self,instance): return instance.total() fieldsets =( ('Grade Salary Information',{ 'fields':('Category','BasicPA','RentP','TransportP','MealG','UtilityP','WeighInP','CSAP','TSAP','CallG','HazardG','RuralAllG','ShiftG','DomesticLawG','StateCounselG','Grade','Step') }), ) This works but it shows 'BasicBM' on the list_display title and i want to change it to 'Basic B/M'. i can't change it because i think the name of the string in list_display list has to match the name of the function in the class Salary in admin.py for this to work and the name of a function can't contain '/' or spaces. please, how do i achieve this? Thanks in Advance! -
display background color based on the conditions in the Django template
Let us consider the color codes red - #FFDADA amber - #FFC200 green - #90EE90 gold - #FFFF00 here is my index.html <td style="background-color:{% if qualification.is_past_due %}#FFDADA{% elif qualification.is_past_month %}#FFC200{% elif not qualification.validated %} #FFFF00 {% else %}#90EE90{% endif %};" Here if qualification is is_past_due = red if qualification is is_past_month (near to expire 30 days) = amber if qualification date is in future and qualification.validate = Green if qualification.expiry date is in future and not qualification.validate = Gold if no expiry_date the white let us consider my models.py class Qualification(models.Model): expiry_date = models.DateField(null=True,verbose_name="Expiry Date", blank=True) validated = models.BooleanField(default=False) def is_past_due(self): try: date1 = datetime.combine(self.expiry_date, datetime.min.time()) date2 = pytz.utc.localize(date1) return date2 and timezone.now().date() > localtime(date2, timezone=self.user.get_user_timezone()).date() except: return '' def is_past_month(self): try: expiry_date = self.expiry_date+relativedelta(months=-1) date1 = datetime.combine(expiry_date, datetime.min.time()) date2 = pytz.utc.localize(date1) return date2 and timezone.now().date() > localtime(date2, timezone=self.user.get_user_timezone()).date() except: return '' def today_date(self): try: today = timezone.now().date() return today except: return '' class Meta: ordering = ['expiry_date'] Let us consider my database records as id expiry_date validated 1 08-11-2019 1 (# alredy expired so red) 2 24-11-2021 0 (# near to expiry so amber ) 3 22-12-2021 1 (# future date and validated(1) so green ) 4 28-12-2021 0 …