Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
TAG INPUT BOX DJANGO [closed]
How to implement tag input box in Django in which the options or items would only come from the specific table in database? -
cannot convert null to strftime in django
I'm trying to convert the time in 12 hours format where I have few rows with time as NULL. I'm passing it as dictionary. How could I leave that NULL rows and convert others rows with have time Here, what I have tried views.py def GetUserInProgress(userid): cursor = connection.cursor() cursor.execute('EXEC [dbo].[sp_GetUserInProgress] @UserId=%s', (userid,)) result_set = cursor.fetchall() data =[] for i in range(len(result_set)): data.append({ 'TaskId':result_set[i][0], 'CreatedOn':result_set[i][13], 'CreatedBy':result_set[i][14], 'StartedOn':result_set[i][15], 'ClosedOn':result_set[i][16], 'Requester':result_set[i][17], 'StartedOnPST':result_set[i][31], 'ClosedOnPST':result_set[i][32], 'ClosedonPST_Final':result_set[i][33].strftime('%d-%m-%Y %I:%M %p'), }) return Response(data) -
How to handle star topology in the Django Rest Framework
I have a Django model like this: class A(models.Model): slug = models.CharField(max_length=20, primary_key=True, unique=True) dataA = models.IntegerField(null=True, blank=True) class B(models.Model): slug= models.OneToOneField(A, to_field="slug", db_column="slug", on_delete=models.CASCADE, related_name='b') dataB = models.IntegerField(null=True, blank=True) class C(models.Model): ticker = models.OneToOneField(A, to_field="slug", db_column="slug", on_delete=models.CASCADE, related_name='c') dataC = models.IntegerField(null=True, blank=True) class D(models.Model): ticker = models.ForeignKey(A, to_field="slug", db_column="slug", on_delete=models.CASCADE, related_name='d') dataD = models.IntegerField(null=True, blank=True) It's like a star topology. B, C is making an OneToOne relation with A and D is making an OneToMany relation with A. So, I want a Django rest framework to get API in which when the user access the API with the slug field in A. It would retrieve the B, C, D data too in one call. I have written the code like this. class DSerializer(serializers.ModelSerializer): slug = serializers.PrimaryKeyRelatedField(queryset=D.objects.all()) class Meta: model = D fields = ['dataD', 'slug'] class ASerializers(serializers.ModelSerializer): d = DSerializer(many=True, read_only=True) class Meta: model = A fields = ['slug','dataA', 'd'] @api_view(['GET']) def api(request, slug): if request.method == 'GET': try: a= A.objects.prefetch_related('d').get(slug=slug) except A.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) serializers = ASerializers(a) return Response(serializers.data) My output returns like the below JSON format. { "slug": "term", "dataA": 1, "d": [{ "dataD": 2, "slug": "term" }, { "dataD": 3, "slug": "term" }, { "dataD": 4, … -
ManytoMany query and template rendering from one model to another
I'm new to Django. I had two different questions. I can't query between one of my model and another model (ManyToMany). I can do this with the shell, but I couldn't handle it in the template. I cannot assign a default value from one model to another model's field. For the first question; What I want to do is show values for multiple options. For this, I could make a query similar to this in the shell: room[0].room_type_id.all() But I can't do this in the template. On the other hand, when I want to show it with display, it returns empty. What I want to do here; returning the room types for each room or or accessing the room_cost of the RoomType class and displaying it in the template, repeated for each room type. {% for room in rooms %} <h3 class="card-title pricing-card-title"> {{room.room_type_id_display}} </h3> {% endfor %} My second question is; To set the value from the property of a different model as default in the other model field. That is, to assign the value returned from the total_price of the Booking model to the price field in the Payment model by default. I would appreciate it if anyone … -
PostgreSQL OLD not working in after update statement level trigger
It is working if I do select particular ID like this: BEGIN UPDATE course SET points = (SELECT COALESCE(SUM("lesson"."points"), 0) AS "sum_points" FROM "course" LEFT OUTER JOIN "lesson" ON ("course"."id" = "lesson"."course_id") WHERE "course"."id" = 7) WHERE "course"."id" = 7; RETURN NULL; END; But not working with OLD which is the updating instance. BEGIN UPDATE course SET points = (SELECT COALESCE(SUM("lesson"."points"), 0) AS "sum_points" FROM "course" LEFT OUTER JOIN "lesson" ON ("course"."id" = "lesson"."course_id") WHERE "course"."id" = OLD."course_id") WHERE "course"."id" = OLD."course_id"; RETURN NULL; END; I'm using django-pgtriggers -
According to doctors name (dropdown) and date selected ,change timeslot dropdown using AJAX in django
//This is my book_appoint.html <!DOCTYPE html> <html> <div class="wrapper"> <div class="register-page"> <div class="register-container"> <form id="appointment-form" role="form" method="post" enctype='multipart/form-data'> <!-- SECTION TITLE --> <div class="section-title wow fadeInUp" data-wow-delay="0.4s"> <h2>Book Appointment</h2> </div> {% csrf_token %} <input name="patient_name" value="{{request.user}}" hidden> <div class="wow fadeInUp" data-wow-delay="0.8s"> <div class="col-md-6 col-sm-6"> <label for="qualification">Doctor Name</label> {{ form.doctor_name }} </div> <div class="col-md-6 col-sm-6"> <label for="specialist"> Date</label> {{ form.date }} </div> <div class="col-md-6 col-sm-6"> <label for="location">Time slot </label> {{ form.time_slot }} // want to apply ajax to select available slot only </div> <div class="col-md-12 col-sm-12"> <label for="description"> Description</label> {{ form.description }} <br> <button type="submit" class="submitButton" id="cf-submit" name="submit">Submit Button</button> </div> </div> </form> </div> </div> </div> </html> //This is my view file: def book_appointment(request): if request.method == 'POST': form = BookAppointmentForm(request.POST or None, request.FILES or None) if form.is_valid(): patient_name = request.POST.get('patient_name') patient = form.save(commit=False) patient.patient_name = User.objects.get(username=patient_name) form.save() messages.success(request, 'appointment booked Successfully') return redirect(homepage) else: form = BookAppointmentForm() messages.error(request, 'Please Enter valid Request ') print(form) return render(request, 'book_appointment.html', {'form': form}) else: form = BookAppointmentForm() return render(request, 'book_appointment.html', {'form': form}) //Here is my models: class BookAppointment(models.Model): TIME_SLOT = ( (0, '09:00 - 10:00'), (1, '10:00 - 11:00'), (2, '11:00 - 12:00'), (3, '12:00 - 13:00'), (4, '13:00 - 14:00'), (5, '14:00 - 15:00'), … -
KeyError in pandas dataframe
in the below code my problem is , when word (which s given by user) is searched when is not in the my table column, pop up message appears and says user doesn't exist , but my if searched is not working, does any body have an idea where i'm doing it wrong, please let me know , i'm working in django, pandas def products(request): if request.method == "POST": df = pd.read_csv("media_cdn/media/user_change_history.csv",header=None) searched = request.POST['searched'] context = {} if searched in df.index: data = df.loc[df[0] == searched] #if data in df.index: data = data.transpose() data = data.to_html(classes='table-wrapper') context = {'d': data} else: messages.info(request, 'Username is incorrect') return render(request, 'blog/products.html', context) else: return render(request, 'blog/products.html') in the above code my problem is , when word (should represent a cell in user ID column) (which s given by user) is searched when is not in the my table column, pop up message appears and says user doesn't exist , but my if searched is not working, does any body have an idea where i'm doing it wrong, please let me know , i'm working in Django, pandas -
How to setup elasticsearch with mongodb, mysql and python flask and django?
I am new to Elasticsearch and have no idea about setting up Elasticsearch with MongoDB and python. I am working on a project which is dependent on 2 microservices. First microservice runs on Django which uses MySQL as database and the other microservice runs on flask which uses MongoDB as database. Now I want to setup Elasticsearch with these 2 microservice so that I can make efficient and fast searches in my project. If anyone has any idea about setting up Elasticsearch with MongoDB, MySQL and python, then kindly help me. -
Why my random picture is not getting uploaded in the media path i provided in the model [duplicate]
i want to upload random pictures from a static named folder to my database. These are my files. Please suggest a way. I am stuck here forever. views.py class VerifyOTPView(APIView): permission_classes = (AllowAny,) serializer_class = VerifyOTPSerializer def post(self, request): serializer = VerifyOTPSerializer(data=request.data) mobile = request.data['mobile'] otp_sent = request.data['otp'] #print('one_time_password', one_time) if mobile and otp_sent: old = Profile.objects.filter(mobile = mobile) if old is not None: old = old.first() otp = old.otp if str(otp) == str(otp_sent): serializer = self.serializer_class(data=request.data) mobile = request.data['mobile'] if serializer.is_valid(raise_exception=True): instance = serializer.save() content = {'mobile': instance.mobile, 'otp': instance.otp, 'name':instance.name, 'username':instance.username, 'logo':instance.logo, 'profile_id': instance.profile_id } return Response(content, status=status.HTTP_201_CREATED) else: return Response({ 'status' : False, 'detail' : 'OTP incorrect, please try again' }) serializers.py class VerifyOTPSerializer(serializers.ModelSerializer): class Meta: model = Profile fields = ['mobile','otp'] def create(self,validated_data): instance = self.Meta.model(**validated_data) mywords = "123456789" res = "expert@" + str(''.join(random.choices(mywords,k = 6))) path = os.path.join(BASE_DIR, 'static') dir_list = os.listdir(path) random_logo = random.choice(dir_list) instance = self.Meta.model.objects.update_or_create(**validated_data, defaults = dict( username = res, name = instance.mobile, logo = random_logo, profile_id = res))[0] instance.save() return instance models.py class Profile(models.Model): mobile = models.CharField(max_length=20) otp = models.CharField(max_length=6) name = models.CharField(max_length=200) username = models.CharField(max_length=200) logo = models.ImageField(upload_to ='profile/', blank=True,null = True) profile_id = models.CharField(max_length=200) settings.py ` STATIC_URL = … -
Need to link my existing view to the admin using admin plus module in a table type view
admin.py def my_view(request): pass admin.site.register_view('timelogreport', view=my_view, name='TimeLog Report') views.py def dictfetchall(cursor): "Return all rows from a cursor as a dict" columns = [col[0] for col in cursor.description] return [ dict(zip(columns, row)) for row in cursor.fetchall() ] @api_view(['GET']) def job(self): cursor = connection.cursor() with open('C:\\Users\\gobs4\\stage\\Project-Management-Tools\\query.sql','r') as inserts: query = inserts.read() cursor.execute(query) return Response(dictfetchall(cursor)) I have used the django admin plus module for creating a view in admin page, But i dont know how to link the above views.py to the admin register view. Can you please help me to do that and i need to show it as table view and not as a json view in the admin, is that possible? -
Changing Request header definition and forwarding to application server
I apologize if my terminology is incorrect. I'm trying to change the name of an incoming header without changing the frontend connection configuration because I have a current server that uses the current value and a new server that has to use a different value on the same physical machine and same IP. Currently getting from front end RequestHeader set X-Y_Z %{SSL_CLIENT_S_DN_CN}e <---- with an underscore in the definition On the new application, using python / django, django framework apparently doesn't accept any headers with an underscore in them. It strips them completely. In apache logs, it shows up and the information is being passed, but not to the application. I set up a reverse proxy with apache in front of the application and tested it out with a dash instead of underscore, and everything works fine. In django, the default for remote user authentication is remote_user everywhere so instead of using X-SSL-Client-CN, I just used Remote-User and that worked. Client authentication from CAC is coming across fine. Is there some method to rewrite the header definition using the reverse proxy in front of the apache server with the application or, within the server if possible? Basically, I want to … -
Django allauth emailverification
I use allauth and want to send a verfication email. ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.ionos.com' EMAIL_HOST_USER = 'info@mydomain.com' EMAIL_HOST_PASSWORD = 'secretpassword' EMAIL_PORT = 587 I use Ionos, the error which shown in browser: SMTPAuthenticationError at /accounts/signup/ (535, b'Authentication credentials invalid') Request Method: POST Request URL: http://127.0.0.1:8000/accounts/signup/ Django Version: 4.0.1 Exception Type: SMTPAuthenticationError Exception Value: (535, b'Authentication credentials invalid') The credentials are correct, maybe there's an error with the passwordencoding, or I'm doing it completly wrong. Do I need any smtp client in the django backend? -
File/data recovery
Very specific question. I was storing a copy of my data in the system folder of a package. Made it easier to run from system.file(). Unfortunately, I accidentally reinstalled the package, and my personal files were "deleted" when R reinstalled the package. They vanished after reinstalled. I searched for the files in my system, but only the shortcut of where they used to be are found. Are the copies of my data actually deleted? If not, how can I recover them? -
NoReverseMatch at /auth/password/reset/
I am using dj-rest-auth package to do auth related functions, installed the package and added to installed apps and included it in main url as follows path('auth/', include('dj_rest_auth.urls')), it works for login, logout etc, but when I do password reset it throws the error http://127.0.0.1:8000/auth/password/reset/ Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name -
Call property from one model class to another model class
I'm new to Django. My goal is to send the value of a method belonging to a model class by default in the other model class. class Booking(models.Model): room_number_id = models.ForeignKey(Room,on_delete=models.DO_NOTHING) customer_id = models.ManyToManyField(Customer) check_in = models.DateTimeField(auto_now_add=True) check_out = models.DateTimeField(auto_now_add=False,auto_now=False,auto_created=False, null=True) status = models.BooleanField(default=False) @property def calculate_day(self): day = self.check_out - self.check_in return str(day.days) @property def total_price(self): day = self.check_out - self.check_in price = self.room_number_id.room_type_id.room_cost return price\*day.days class Payment(models.Model): booking_id = models.ForeignKey(Booking,on_delete=models.DO_NOTHING) ACCEPT_CHOICES = ( ('Cash','Cash'), ('Credit','Cash'), ) payment_type = models.CharField(max_length=1,choices=ACCEPT_CHOICES) total_price = models.IntegerField(default=Booking.total_price()) payment_detail = models.TextField() In short, I want to make the value of the total_price method of the Booking model the default value of the price in the Payment model. Apart from that, if you have different advice and suggestions, I'm waiting for a reply. -
How to integrate Django Project with Kafka
I know there is python library of kafka for python: confluent-kafka. But How can I integrate Web (Django) application with kafka? I found django-logpipe library. But I am not sure Its production ready or not -
Pass a list of start_urls as parameter from Django to Scrapyd
I'm working in a little scraping platform using Django and Scrapy (scrapyd as API). Default spider is working as expected, and using ScrapyAPI (python-scrapyd-api) I'm passing a URL from Django and scrap data, I'm even saving results as JSON to a postgres instance. This is for a SINGLE URL pass as parameter. When trying to pass a list of URLs, scrapy just takes the first URL from a list. I don't know if it's something about how Python or ScrapyAPI is treating or processing this arguments. # views.py # This is how I pass parameters from Django task = scrapyd.schedule( project=scrapy_project, spider=scrapy_spider, settings=scrapy_settings, url=urls ) # default_spider.py def __init__(self, *args, **kwargs): super(SpiderMercadoLibre, self).__init__(*args, **kwargs) self.domain = kwargs.get('domain') self.start_urls = [self.url] # list(kwargs.get('url'))<--Doesn't work self.allowed_domains = [self.domain] # Setup to tell Scrapy to make calls from same URLs def start_requests(self): ... for url in self.start_urls: yield scrapy.Request(url, callback=self.parse, meta={'original_url': url}, dont_filter=True) Of course I can make some changes to my model so I can save every result iterating from the list of URLs and scheduling each URL using ScrapydAPI, but I'm wondering if this is a limitation of scrapyd itself or am I missing something about Python mechanics. This is how … -
Django admin - custom admin pages for specific users
In my main url router I have two separate urls, one for each admin page that I set up in my admin file: /adminmain/ URL goes to the default admin panel (admin.site.urls) with many different models registered. But I want the second URL /adminonly/ to only go to users where is_admin = True in their user profIle. So far my admin.py file below isn't achieving this. If I log in as a superuser then both urls will show all of the models registered to that admin page. But if I login as a non-superuser who IS an admin (is_admin = True) I just get a message: You don't have permission to view or edit anything. on BOTH pages. I want that user to see the models registered for the /adminonly/ page. My admin.py: from django.contrib.admin import ModelAdmin, site, AdminSite from .models import Post class PostAdmin(ModelAdmin): list_display = ( 'id', 'slug', 'title', 'author', 'publish_date' ) def has_view_permission(self, request, obj=None): if request.user.is_admin: return True def has_add_permission(self, request): if request.user.is_admin: return True def has_change_permission(self, request, obj=None): if request.user.is_admin: return True def has_delete_permission(self, request, obj=None): if request.user.is_admin: return True class PostsAdmin2(AdminSite): site_header = 'Posts Admin' def has_permission(self, request): return request.user.is_admin posts_site2 = PostsAdmin2(name='PostsAdmin') #default … -
intermittent 502 Bad Gateway nginx/1.18.0 (Ubuntu)
My django app has ben running for about 3 months now. I intermittently get a 502 Bad Gateway error message on any page, I will even get this error the Django admin page, so I don't think its my code. Most of the time the page loads fine, or if I just reload it will load. can someone help me understand where I'm making a mistake The output from sudo tail -20 /var/log/nginx/error.log yields: 2022/03/29 16:12:56 [error] 720#720: *8182 upstream prematurely closed connection while reading response header from upstream, client: 165.225.38.84, server: _, request: "GET /backyard/ HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/backyard/", host: "104.131.165.99", referrer: "http://104.131.165.99/backyard/" 2022/03/29 16:19:44 [error] 720#720: *8188 upstream prematurely closed connection while reading response header from upstream, client: 165.225.38.84, server: _, request: "GET /garage/ HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/garage/", host: "104.131.165.99", referrer: "http://104.131.165.99/garage/" 2022/03/29 16:26:29 [error] 720#720: *8194 upstream prematurely closed connection while reading response header from upstream, client: 165.225.38.84, server: _, request: "GET /garage/ HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/garage/", host: "104.131.165.99", referrer: "http://104.131.165.99/garage/" 2022/03/29 16:36:30 [error] 720#720: *8205 upstream prematurely closed connection while reading response header from upstream, client: 165.225.38.84, server: _, request: "GET /garage/ HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/garage/", host: "104.131.165.99", referrer: "http://104.131.165.99/garage/" 2022/03/29 16:42:58 [error] 720#720: *8209 upstream prematurely closed connection while … -
How can I get my image to display using django?
I cannot get my images to display on my webpage while using Django. All I see is the images 'alt' text displayed, and a broken image icon next to it. I'm able to successfully upload the image as originally intended. I'm using an Ubuntu AWS instance with Apache installed on it for my server. I also have Pillow installed for displaying images. I'm also able to successfully load my CSS, so I know that it probably isn't an issue with my static directories or settings. This is my settings.py file: import os from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-)zp1^v$1v9%@3e*rz4yp0o964-^!8@ruff4$((b5vcv6*h@d-x' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['ec2-3-14-217-157.us-east-2.compute.amazonaws.com', '3.14.217.157'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'product.apps.ProductConfig', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'productapp.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', … -
Using djnago-import-export import of blank TextField
Imagine I have Data stored in my Dabase. A Model contains a Django-TextField with blank=True but without null=True according to Djnago-convention. The Data was created via the admin-menu. Empty Text-Fields are stored as empty string which works just fine. But import trough django-import-export throws violates not-null constraint DETAIL: Failing row contains. Is this a problem of djnago-import-export? -
Filter queryset by year between two date fields
I have a start_date and an end_date fields in my model. The user shall be able to filter records by selecting a year value, so that records that span over multiple years should be shown if the year selected is included. For example: Selected year: 2019 start_date end_date 2017-03-12 2021-09-03 2019-12-12 2020-06-05 I can do this query by raw SQL like that: SELECT * FROM `orders` WHERE '2019' BETWEEN YEAR(`start_date`) AND YEAR(`end_date`); How can I do this using Django ORM and avoid raw SQL queries? Because I am already using the ORM in multiple filters and only remaining this bit. -
Django M2M queryset with multiple instances and Q
I have the following oversimplified models: class Surgerytype(models.Model): title = models.CharField(max_length=255, null=True, blank=True) class Content(models.Model): surgery = models.ManyToManyField(Surgerytype, null=True, blank=True) I have a lot of Content instances, which themselves have a lot of Surgerytypes related to them. You can think of Surgerytypes as tags. I have this query: content = Content.objects.all() # surgeries is an array of Surgerytype instances titles query = content.filter(Q(surgery__title__in=surgeries) When I ajax send to my backend a tag (i.e. a Surgerytype instance title), all good the query returns all the instances of Content that include this tag. Now, the problem is that if I select two tags, the queryset returns nothing instead of all Content instances that include these 2 tags and possibly more tags. I have found on SO how to do this for 1 M2M model in the Content model but it is quite dirty and not scalable at all (there are 3 other M2M/filters to add in the real Content model). Any ideas? Found many questions related to the subject but it doesn't seem to have a definitive, scalable answer. Many thanks to you all -
Django template link with Django include
is it possible to open a html link form in a Django html include? So, I don't want the link in the html to open in the browser address bar so that it can be seen. So I was wondering if you can somehow open it in the same template. But that didn't work for me, because the default data for the form is not taken. As example: in my .html file I have a URL <li role="presentation"><a href="{% url 'create_exposition' blog.id %}">create new blog</a></li> {% include "zed/create_exposition.html" with ...%} This link in urls.py re_path(r'^(?P<blog_id>[0-9]+)/create_exposition/$', views.create_exposition, name='create_exposition'), and in the views.py def create_exposition(request, blog_id): form = ExpositionForm(request.POST or None) blog= get_object_or_404(Blog, pk=blog_id) if form.is_valid(): blogs_expositions = blog.exposition_set.all() for s in blogs_expositions: if s.identifikationsnummer == form.cleaned_data.get("idnumber"): context = { 'blog': blog, 'form': form, 'error_message': 'You already added that exposition', } return render(request, 'zed/create_exposition.html', context) exposition = form.save(commit=False) exposition.blog= blog exposition.save() return render(request, 'zed/blog_detail.html', {'blog': blog}) context = { 'blog': blog, 'form': form, } return render(request, 'zed/create_exposition.html', context) Yes, I know it is still the old away and no genericview. I am already retooling piece by piece. -
How can Django Admin change "history" logs be used to also store copy of data?
Django Admin change "history" logs As you know Django Admin's sidebar shows a list of APP > MODELS. When you click on a MODEL, the focus area displays a list of RECORDS. Click on a RECORD, then the focus area shows a single RECORD as a form which you can change. Here, in the upper right hand corner of the change form, is a gray pill-shaped button labeled "HISTORY" with entries like: Dec. 9, 2021, 4:38 p.m. me Changed Table price headers. Feb. 26, 2022, 2:06 p.m. me Changed Table date headers. What I need is a copy of the record data before each change. Later, I need to query the Django database and--in this example--get the version of the record prior to the Feb 26 change. How can Django Admin change "history" logs be used to also store copy of data? Not for every Django Model The rest of the Models & Records in Django Admin should behave normally. I only have a few Models where I need history log and data. Not to be confused with model history When discussing this with other Django developers I have to explain the history I need is for the record's data, …