Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Optimize request in the FOR loop
How can I optimize the following request to eliminate loop? Codes count is several hundred, so I get several hundreds database queries, which is unacceptable. n = 3 result = [] codes = Target.objects.filter(code__in=['ABC', 'CDE', ...]) for code in codes: result.append(Data.objects.select_related('target') .filter(target__code=code) .values('spec', 'spec_type') .order_by('-spec')[:n]) Models: class Data(models.Model): target = models.ForeignKey(Target) spec_type = models.CharField() spec = models.FloatField() class Target(models.Model): code = models.TextField(db_index=True) -
Pylance auto import one level too deep (Django)
As described in the title, the pylance auto-import imports one level too deep for Django. It throws an Error "no module named [module_name]". How can I fix it? My project structure (to the app I want to import from): Warenwirtschaft/BackEnd/BackEnd/warenwirtschaft The pylance import: from BackEnd.BackEnd.warenwirtschaft.models import Ingredient The correct import: from BackEnd.warenwirtschaft.models import Ingredient I just don't want to manually type all imports... -
correct using get_or_create?
To my code, which records a contact from the form and adds it to the db, need to add get_or_create, or write another condition (if there is a contact with such a phone — update, no - add), but i'm do it for the first time, please, I'll be glad to read solution to my problem and a brief explanation ♡ views.py from django.http import HttpResponse from django.shortcuts import render,redirect from django.contrib import messages from .forms import Forms def main(request): form = Forms if request.method == "POST": form = Forms(request.POST) if form.is_valid(): form.save() messages.success(request, 'Form has been submitted') return redirect('/') return render(request, 'app/main.html', { 'form':form } ) forms.py from django.forms import ModelForm from .models import Form class Forms(ModelForm): class Meta: model = Form fields = '__all__' urls.py from django.contrib import admin from django.urls import path, include from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('', include('app.urls')) ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) models.py from django.db import models class Form(models.Model): name = models.CharField(max_length=30) phone = models.CharField(max_length=30) admin.py from django.contrib import admin from .models import Form '''from django.contrib.admin.models import LogEntry LogEntry.objects.all().delete()''' '''for delete actions in admin_panel''' admin.site.register(Form) apps.py from django.apps import AppConfig class AppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = … -
Django avoiding page reload on form submission using HttpResponseRedirect
I wanted to create a chunk of my website so that it does not make the whole page reload once someone subits a form. I tried this previous question: Django How do i Insert data without refreshing or reloading page I used an HttpResponseRedirect as the post suggested In views.py: def displayDict(request): m = '' ip = visitor_ip_address(request) try: m = ChatStream.objects.filter() last = m.latest() last_ss = last.ss last_user = last.user html_smallest_steps = markdown.markdown(last_ss) # html_user = markdown.markdown(last_user) except: html_ss = '' html_user = '' return render(HttpResponseRedirect, 'chatStream.html', {"chat": m, "html_ss": mark_safe(html_ss), "last_user": mark_safe(last_user)}) my html: {% for chat_stream in chat %} <p> {% comment %} {% if != forloop.last %} # Do something here {% endif %} {% endcomment %} {% if forloop.last %} {% else %} <b>ss:</b> <br> {{chat_stream.ss}} <br> <b>{{user}}:</b> <br> {{chat_stream.user}} <br> {% endif %} </p> {% endfor %} <form action="/send/" method = "post">{% csrf_token %} <input type="text" name="userMessage"> <input type="submit" value="Send to ss bot"> </form> AttributeError: type object 'HttpResponseRedirect' has no attribute 'META'``` And in more detail here is the complete error: Internal Server Error: /chattr/ Traceback (most recent call last): File "C:\Users\Kaij\Documents\djangoTests\django_tailwind_project\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(request) File "C:\Users\Kaij\Documents\djangoTests\django_tailwind_project\env\lib\site-packages\django\core\handlers\base.py", line 181, in … -
Get decimal data from Postgrades database using Django
I use Python and the Django framework to get some decimal data from the PostGress database. My question is that the variable "new_poi_lat" is displayed correctly, but why is the variable "poi_lat" displayed as shown below ?! I want the "poi_lat" variable to be displayed normally. And then I want to use "zip (poi_lat, poi_log)" but it gives an error! My code: poi_lat = [] poi_log = [] for id in IDs: poi_name = end_poi.values_list('lat','log').filter(id=id) new_poi_lat = poi_name[0][0] new_poi_log = poi_name[0][1] print("new_poi_lat:" , new_poi_lat) poi_lat.append(new_poi_lat) poi_log.append(new_poi_log) print("poi_lat:" , poi_lat) coordinates = (zip(poi_lat, poi_log)) output: new_poi_lat: 34.791553 new_poi_lat: 34.804567 poi_lat: [Decimal('34.791553'), Decimal('34.804567')] -
Wrong field value in Django FileField
There are models: class DataFile(models.Model): title = models.CharField( max_length=100, help_text='Краткое наименование данных', verbose_name = 'Наименование' ) file = models.FileField(upload_to ='data/', verbose_name = 'Файл данных', unique=True) .... class Map(models.Model): .......... data_file = models.ForeignKey( DataFile,on_delete=models.CASCADE, verbose_name = 'Файл данных', to_field='file' ) .......... I have an object of class Map. However, when referring to him obj.get().data_file.file.path or obj.get().data_file.file its behavior is different for django-shell and actual work. For Django-shell, a manual request gives the full path, which is what I need (stored in the 'file' field of the DataFile class). But in real work it outputs the value of the 'title' field of the DataFile class). I need the output to be exactly the full path to the file, i.e. what is stored in the file field. -
ModelForm doesn´t validate
I just cant make my modelform to validate. I call it from view, and GET prints it right, but when POST occurs it doesn´t validate. Allways getting ValueError Exception Value: The view gestionPartesMedicos.views.partes_medicos_add didn't return an HttpResponse object. It returned None instead. form´s name attributes correspond to model´s and form´s. This my model: class MedicalList(models.Model): worker= models.ForeignKey(worker, on_delete=models.CASCADE) description=models.CharField(max_length=255) upload=models.FileField(upload_to='media/') created_at=models.DateTimeField(auto_now_add=True) this my form class: class MedicalListForm(forms.ModelForm): class Meta: model = MedicalList fields = ( 'worker', 'description', 'upload', ) description=forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control'})) upload=forms.FileField(widget=forms.ClearableFileInput(attrs={'class': 'form-control'})) def __init__(self, *args, **kwargs): user_id = kwargs.pop('user_id') super().__init__(*args, **kwargs) worker = forms.ModelChoiceField(queryset=None,empty_label=None,widget=forms.Select(attrs={'class': 'form-control'})) worker_id = Trabajador.objects.filter(user_id=user_id) self.fields['worker'].queryset = worker_id self.fields['worker'].empty_label = None And this my view in trouble: def medical_list_add(request): if request.method == "POST": form = MedicalListForm(request.POST,request.FILES,user_id=request.user) if form.is_valid(): form.save() return redirect('medical_list') else: form = MedicalListForm(user_id=request.user) return render(request, 'medical_list_add.html', {'form': form}) Might it be around Model field created_at? just trying to guess, totally lost. thanks in advance -
Django Custom Middleware gets AnonymousUser even for logged in users
I'm using a custom middleware that looks like this: class DisallowLoggedInUsers: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # Code to be executed for each request before # the view (and later middleware) are called. print("in interceptor before response") print("user: ", request.user) print("is_authenticated?: ", request.user.is_authenticated) response = self.get_response(request) # Code to be executed for each request/response after # the view is called. print("in interceptor after response") print("user: ", request.user) print("is_authenticated?: ", request.user.is_authenticated) return response I also have similar logs inside the get method of the view. Here's the log output: in interceptor before response user: AnonymousUser is_authenticated? False in view user: John Doe/john@test.domain is_authenticated? True in interceptor after response user: John Doe/john@test.domain is_authenticated? True Here is my order of middlewares: MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', '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', 'userdata.customInterceptor.DisallowLoggedInUsers', ] Even though I've put my custom middleware way down the order (below AuthenticationMiddleware, the request.user object is not set untill the view is processed. I even tried trapping the request at process_view of the middleware but got an AnonymousUser there still. What am I doing wrong? I'm on Django 3.1.7 and djangorestframework 3.12.3. Note: I checked this related question, but it did not help. -
Can't access Django template variable
I have problem and can't see the error here, I want to pass some variables into newly generated template and then access it with javascript. But template is rendering empty value. But I can see in console that variables are not empty. The views.py arguments={'ram_count':ram_count, 'max_ram':max_ram} print(arguments['ram_count']) print(arguments['max_ram']) return render(request,'generated_elements.html',arguments) The template <option value={{ ram_count }}>{{ ram_count }}</option> <option value={{ max_ram }}>{{ max_ram }}</option> this is view from page Any help will be appreciated -
Custom Django form validation to display front end error
Right now I am setting up a range filter in my Django Project that looks like this. What I need to do, is the present the above behavior from happening, not just in the views logic, which is simple, but I need to display a message to use on the front end something along the lines of "Low bound number cannot be higher than High bound", which would appear like this. Heres my forms.py class MultiFilterForm(forms.Form): review_high = forms.IntegerField(validators = [MinValueValidator(0)], min_value=0, label = 'Reviews', required = False, widget = forms.NumberInput( attrs={'id': 'reviewInputHigh', 'name': 'reviewHigh', 'href': '#', 'value': '', 'class': "form-control"})) review_choice_high =(('lte', 'Reviews <='),) reviewsign_high = forms.ChoiceField(choices = review_choice_high, label = 'Reviews <=', required = False, widget = forms.TextInput(attrs={'id': 'reviewSignHigh','class': 'form-control',})) review_low = forms.IntegerField(validators = [MinValueValidator(0)], min_value=0, required = False, widget = forms.NumberInput( attrs={'id': 'reviewInputLow', 'name': 'reviewLow', 'href': '#', 'value': '', 'class': "form-control"})) review_choice_low = (('gte', 'Reviews >='),) reviewsign_low = forms.ChoiceField(choices = review_choice_low, label = 'Reviews >=', required = False, widget = forms.Select(attrs={'id': 'reviewSignLow','class': 'form-control',})) I was thinking of implementing a function into the Form class like so def validate_bounds(review_high, review_low): if review_low.value > review_high.value: raise ValidationError('Low bound number cannot be higher than High bound') And somehow pass the … -
How do I add an event to a formset field?
How do I add an event to a formset? I tried this but it doesn't work, calculos.js var formset_event = document.querySelector("table.table-formset input:nth-child(4)"); formset_event.setAttribute("onchange","multiplicar_formset()"); where I want to add the event onchange is right here: {% render_field formset.empty_form.unit_price class="form-control" %} I leave the html code here presupuestos-forms.html <div class="form-row" id="empty-row"> <table class="table table-bordered table-nowrap align-middle table-formset"> <td> {% render_field formset.empty_form.codigo class="form-control" %} </td> <td> {% render_field formset.empty_form.descripcion class="form-control" %} </td> <td> {% render_field formset.empty_form.quantity class="form-control" %} </td> <td> {% render_field formset.empty_form.unit_price class="form-control" %} </td> <td> {% render_field formset.empty_form.total_price class="form-control" %} </td> <td> {% render_field formset.empty_form.tax_free class="form-check-input" %} </td> </table> </div> -
Django Import Custom Module to Views.py
We have this folder structure: django_app >> views.py django_app >> bot_funcs >> bot.py Both django_app and bot_funcs have blank __init__.py files. We are attempting to import bot.py into views.py. We have tried every combination we can think of, and assumed something like this would work: from .bot_funcs import bot This results in a 500 server error on our website and this traceback in Spyder: Traceback (most recent call last): File "<ipython-input-18-937d4612431c>", line 1, in <module> from .bot_funcs import bot ModuleNotFoundError: No module named '__main__.bot_funcs'; '__main__' is not a package I think this traceback is a red herring, because other imports in views.py (e.g. from .models import Feedback) return the same traceback, but work properly on the website. What is the best way to import from a folder located in the app folder, and why are the usual import methods not working? -
Django Model Fields: Keeping track of list of possible items
I'm creating a Django model, where (as a simplified example) a user group (Users are all assigned to a group) will be able to access files of a certain file type, and which types a group can access will change by group. The list of files can be any of ~10 common file types. This list might change, but that's probably not common. Roughly speaking, I see two ways of doing this. Representing the file types as a list of strings for each user [".jpg", ".txt", ".zip"] or, as a 1:M relationship with some sort of "FileExtension" Object. These are cases in which I imagine the ORM route would be much preferred (Ex: If it's important to keep track of Each file extension's use case as for "image", "text", "audio", etc) But what if there's no other information we really need to consider here but the file extension itself? Is there a reason to create a whole model for just a few strings? In my actual project, I want to avoid the complications of creating and maintaining multiple models and storing those in the DB if I can. Rough Possible Code Examples of each: String/List approach: class UserGroup(models.Model): group_name = … -
My form is not submitting to database in Django
My View with templateView: I am trying to send my forms to database but it is not submitted because of unknown problems. I tried to combine several forms in one view. How can I send files with class based view(with def post function)? class AddFormView(TemplateView): template_name = 'formuz.html' # Define method to handle GET request def get(self, *args, **kwargs): # Create an instance of the formset EducationFormSet = modelformset_factory(Education_uz, form=EducationForm, extra=1) education_formset = EducationFormSet(queryset=Education_uz.objects.none()) my_form = MyForm(prefix="form") return self.render_to_response({'my_form': my_form,'education_formset':education_formset}) # Define method to handle POST request def post(self,request, *args, **kwargs): EducationFormSet = modelformset_factory(Education_uz, form=EducationForm, extra=1) education_formset = EducationFormSet(data=self.request.POST) my_form = self.form_class(request.POST,request.FILES,prefix='form') #check if submitted forms are valid if all([my_form.is_valid(), education_formset.is_valid()]): form = my_form.save() education = education_formset.save(commit=False) education.form = form education.save() # education_formset.save() return redirect(reverse_lazy('dashboard')) else: return HttpResponse("ishlamottiyu", content_type='text/plain') return self.render_to_response({'my_form': my_form,'education_formset':education_formset}) everything is okay with my models and forms.I am combining several forms in one view -
Django how to loop through a model but not inclide the last entry
I'd like to loop through every entry in a django model except the very last item inside of a template. I understand how to do this in python, but unsure of how I might do it inside of a template. Currently my index.html: {% for chat_stream in chat %} <p> <b>bot:</b> <br> {{chat_stream.bot}} <br> <b>{{user}}:</b> <br> {{chat_stream.user}} <br> </p> {% endfor %} The above code loops through entire model how would I not include the last entry (without first processing it in a view.py)? Thank you -
Django's user_passes_test always gets Anonymous User
I'm using the following class-based view and applying the UserPassesTestMixin to it to check some pre-conditions. class SomeTestView(UserPassesTestMixin, APIView): def test_func(self): return check_precondition(self.request.user) def get(self, request): print("inside view") print("user: ", request.user) print("is_authenticated? ", request.user.is_authenticated) return Response({"status": "success"}) Below is my precondition: def check_precondition(user): print("in user_passes_test") print("user: ", user) print("is_authenticated? ", user.is_authenticated) return True Here's the output I am getting: in user_passes_test user: AnonymousUser is_authenticated? False inside view user: John Doe/john@test.domain is_authenticated? True What I'm not able to understand is that why is the request.user anonymous inside the user_passes_test check. I want to run some precondition checks based on the user object. Here is my sequence of middlewares: MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', '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', ] I'm on Django 3.1.7 and djangorestframework 3.12.3. -
Django Middleware addition breaks on Heroku but works on local
I have a middleware file that I use to identify the SIDE it that I need to use based on the environment I am running my app. #myusermodel/middleware.py from django.utils.deprecation import MiddlewareMixin from django.contrib.sites.models import Site from django.conf import settings class DynamicSiteMiddleware(MiddlewareMixin): # """ # Make all domain names available through request.site # """ def process_request(self, request): print('I am entering the middleware') try: current_site = Site.objects.get(domain=request.get_host()) print('I found the site for this domain and it is', current_site) except Site.DoesNotExist: current_site = Site.objects.get(id=settings.SITE_ID) print('I did not find the site for this domain so I set to the default, which is', current_site) request.site = current_site settings.SITE_ID = current_site.id response = self.get_response(request) return response I then add such middleware to my settings.py #mywebsite/settings.py """ Django settings for mywebsite project. Generated by 'django-admin startproject' using Django 3.2.5. For more information on this file, see https://docs.djangoproject.com/en/3.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.2/ref/settings/ """ from pathlib import Path import os import django_on_heroku import django_heroku import cloudinary import cloudinary_storage import dj_database_url from decouple import config import cloudinary.uploader import cloudinary.api # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # Quick-start development settings - unsuitable for production # … -
Django filter __lte __gte strings
I would like to filter models given a user input. For example the user would like to go on a cruise that is 1-5 days long. In the template I have a selector with these values (1-5, 6-9, 10-16, 17+). In the view I create these as kwargs. def create_kwargs(from_date, nights): kwargs = {} got_nights = nights != '-' got_date = False if not from_date else True if got_nights and (not got_date): nights_kwargs(kwargs, nights) if got_nights and got_date: nights_kwargs(kwargs, nights) kwargs['start_months__contains'] = from_date if (not got_nights) and got_date: kwargs['start_months__contains'] = from_date return kwargs def nights_kwargs(kwargs, nights): if '-' in nights: c_min, c_max = nights.split('-') kwargs['cruise_duration__gte'] = c_min kwargs['cruise_duration__lte'] = c_max else: kwargs['cruise_duration__gte'] = '17' Than I feed these kwargs to the filter method: for i, area in enumerate(filter_areas): cruises = GeneralCruise.objects.filter(areas__contains=area, **kwargs) Previously I tried to check equality and it worked: kwargs['cruise_duration'] = '1' My problem is that if I write __lte or __gte it returns all the models even if they are not matching the criteria. I read other questions regarding this and I think this should be working. This is the model: class GeneralCruise(models.Model): company = models.CharField(max_length=255, null=True) ship_name = models.CharField(max_length=255, null=True) ship_img = models.CharField(max_length=255, null=True) cruise_name = … -
What should I change with the static files so they load css files and images in my django project?
I want to load a few css files (and images) in my django project, im linking them in my code and everything seems to look okay, but I think something is either wrong with the path of the static folder, or with my code where im linking it, because whatever I do they're not visible on the website. Please let me know if you have any ideas! Im trying to figure it out all day and it must be one of these small stupid mistakes css in my html code static files in settings.py -
Django RestFramework return just last result after filtered
In my django project i use DjangoRestFramework for expose some API endpoint. Now i am try to expose just the last result of a model after filtered the data. Models: class VarsResults(models.Model): id = models.AutoField(primary_key=True) id_res = models.ForeignKey(Results, related_name="mainres", on_delete=models.CASCADE) var_id = models.ForeignKey(ModbusVariable, null=True, on_delete=models.SET_NULL) var_val = models.CharField(max_length=400, blank=True) var_val_conv = models.CharField(max_length=100, blank=True, null=True) base_byte_order = models.CharField(max_length=15) var_hash = models.CharField(max_length=400) serialyzers: class VarsResultsSerializer(serializers.ModelSerializer): id_res = ResultsSerializer(read_only=True) var_id = ModvarSerializer(read_only=True) class Meta: model = VarsResults fields = ['id', 'id_res', 'var_id', 'var_val', 'var_conv', 'var_hash'] views.py class VarResultsListLast(generics.ListAPIView): queryset = VarsResults.objects.using(random.choice(replica_list)).order_by('-id')[:1] serializer_class = VarsResultsSerializer pagination_class = StandardResultsSetPagination # paginator = None filter_backends = [DjangoFilterBackend] filterset_fields = { 'id_res__id': ['exact'], 'id_res__device': ['exact'], 'id_res__unit__id': ['exact'], 'id_res__proj_code': ['exact'], 'var_id__var_group__short_name': ['exact'], 'id_res__read_date': ['gte', 'lte', 'exact', 'gt', 'lt'] } search_fields = ['id_res__id', 'id_res__unit__id', 'id_res__device', 'id_res__proj_code', 'id_res__read_date'] ordering_fields = '__all__' I create my queryset using .order_by('-id')[:1] for have just the last results but it works only if i don't use any filter (return the last result for the whole table), if i try to filter, for example using proj_code or somethin other filter i would to have in return just the last result from the filtered data, but i have: (call for example: http://127.0.0.1:8000/api/results_data_last/?id_res__proj_code=CR00069) AssertionError at /api/results_data_last/ Cannot filter … -
Python - How can I get the largest decimal of two decimals
I have two values of type decimal i.e <class 'decimal.Decimal'> and <class 'decimal.Decimal'> and the numbers are print(type(option.principal.amount), 'and', type(max_monthly_amount.amount)) Outputs 500000.00 and 500000 Getting max of the two values like this option.principal.amount.max(max_monthly_amount.amount) Returns 'decimal.Decimal' object has no attribute 'max_term' -
Django in Docker Container not working with Selenium Grid 4
I recently started trying to containerize a django app. I've been trying to get the tests work for a few days with no luck. I have no experience with Selenium Grid but it seems like the way to work with Django in a docker container, especially if I need to be able to view whats happening. # docker-compose.yml version: "3.9" services: myapp: build: . command: bash -c " npm run build && python manage.py migrate && python manage.py runserver 0.0.0.0:8000" volumes: - ./:/myapp env_file: - .env container_name: myapp-container ports: - "8000:8000" networks: mynetwork: ipv4_address: 171.20.0.3 selenium-hub: image: selenium/hub:4.1 container_name: selenium-hub ports: - "4442:4442" - "4443:4443" - "4444:4444" networks: mynetwork: ipv4_address: 171.20.0.4 chrome: image: selenium/node-chrome:4.1 container_name: chrome-worker shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 networks: mynetwork: ipv4_address: 171.20.0.8 networks: mynetwork: ipam: config: - subnet: 171.20.0.0/24 gateway: 171.20.0.1 Within my code it should just be a matter of changing context.selenium = webdriver.Chrome(chrome_options=chrome_options) to below: def before_all(context): chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--window-size=3840,2160") chrome_options.add_argument("--allow-insecure-localhost") # chrome_options.add_experimental_option("detach", True) # context.selenium = webdriver.Chrome(chrome_options=chrome_options) context.selenium = webdriver.Remote(command_executor='http://localhost:4444', options=chrome_options) context.selenium.implicitly_wait(1) TransactionTestCase.serialized_rollback = True However this results in this error: HOOK-ERROR in before_all: MaxRetryError: HTTPConnectionPool(host='localhost', port=4444): Max retries exceeded with url: /session (Caused … -
AssertionError at /wel/ Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneTyp
I am trying to create an api using django rest framework but facing the above mentioned issue my models.py code from django.db import models class React(models.Model): name=models.CharField(max_length=20) details=models.CharField(max_length=500) and my views.py code from django.shortcuts import render from rest_framework.views import APIView from . models import * from rest_framework.response import Response from . serializer import * class ReactView(APIView): serializer_class = ReactSerializer def get(self,request): for detail in React.objects.all(): detail = [{'name':detail.name,'detail':detail.detail}] return Response(detail) def post(self,request): serializer=ReactSerializer(data=request.data) if serializer.is_valid(raise_exception = True): serializer.save() -
jQuery not reflecting accurate values
I have implemented a like button with jQuery into my django project. Everything is working except the like count is not being properly displayed Example: The user enters the page with the post unliked User then likes the post: API request: User then un likes post: You can see that the likes are being properly sent to the DB but the likes count is backwards. I have spent a ton of time on this but for the life of me I cant figure out why. view: class PostLikeAPIToggle(APIView): authentication_classes = (authentication.SessionAuthentication,) permission_classes = (permissions.IsAuthenticated,) def get(self, request, pk=None, format=None): # slug = self.kwargs.get("slug") obj = get_object_or_404(Post, pk=pk) url_ = obj.get_absolute_url() user = self.request.user updated = False liked = False counts=obj.likes.count() if user.is_authenticated: if user in obj.likes.all(): liked = False obj.likes.remove(user) else: liked = True obj.likes.add(user) updated = True data = { "updated": updated, "liked": liked, "likescount": counts } return Response(data) jQuery: <script> $(document).ready(function(){ function updateText(btn, newCount, verb){ btn.text(newCount + " " + verb) } $(".like-btn").click(function(e){ e.preventDefault() var this_ = $(this) var likeUrl = this_.attr("data-href") var likeCount = parseInt(this_.attr("data-likes")) | 0 var addLike = likeCount + 1 var removeLike = likeCount - 1 if (likeUrl){ $.ajax({ url: likeUrl, method: "GET", data: … -
Non-pip-installable python modules on Heroku
I am trying to deploy a Django Web-App that, amongst other, implements the IfcOpenShell Python module (http://ifcopenshell.org/python ). Unfortunately, this module is not available through pip install. To use it locally, I just download the files and paste them in my python environment site-packages folder. When I deploy this App on Heroku the IfcOpenShell module is missing of course. Is there a possibility to add it manually to Heroku somehow?