Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Trying to compare date time from query set with a date time object
This maybe very obvious, but I'm new to Python and Django. I'm writing middleware and need to compare two user time points. Basically if a user is on the site over 24 hours, I want to remove their permissions. class PremiumMiddleware(object): def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) user = request.user datetime_done = Purchase.objects.filter(user=user).values_list("datetime_completed") if datetime_completed != "": if datetime_completed > datetime.datetime.now(): remove_perm('add_permission', user, Purchase) return response This is the error I get: TypeError: '>' not supported between instances of 'str' and 'datetime.datetime' I also had a secondary question. Can I put the permissions in the purchase model directly or must it be in the user model? Everytime a user does an action, this model is updated with the datetime_done, date_action, id, new token, etc are all updated. Is this a bad way to set this up? class Purchase(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) datetime_action = models.DateTimeField(default=datetime.now, blank=True) datetime_completed = models.DateTimeField(default=datetime.now, blank=True) id = models.CharField(max_length=250, blank=True) success = models.BooleanField(default=False) class Meta: ordering = ['user'] permissions = (("add_permission", "Add Permission"),) def __str__(self): return f'{self.user}' -
Django many to many queryset - get list of items actively used by many to many object
I have following Django models: class Tag(models.Model): tag = models.CharField(max_length=100) class Photo(models.Model): photo = models.ImageField() tags = models.ManyToManyField(Tag, through = 'PhotoTag', related_name="tags") class PhotoTag(models.Model): photo = models.ForeignKey(Photo, blank=True, null=True, on_delete=models.CASCADE) tag = models.ForeignKey(Tag, blank=True, null=True, on_delete=models.CASCADE) I want to get queryset that has only tags that are currently assigned to any photo eg only those tags that have a PhotoTag record. What is the queryset for that? -
Can you return data from multiple models as a response from a class that derives ListApiView in django?
I'd like to present to the requester data(get request) from multiple models using foreign keys, but the delimiting factor is the required serializer_class property, which only allows me to return data from a single model. Is there an approach that works for this derivation, or do I need to try something else altogether to accomplish this? Using django 1.11 Below I have some code that merely shows an example of the method, get_queryset, that I'm using in order to present the user data to give an idea of what tools I'm working with to try and return data. import json from rest_framework.views import APIView from rest_framework.authentication import SessionAuthentication from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework.response import Response from rest_framework import generics, mixins, permissions from .serializers import UserProfileSerializer from customApp__UserProfile.models import UserProfile from django.shortcuts import get_object_or_404 ##################################################################################### # Helper Function : is_json # Purpose : determines if input is valid json data # ##################################################################################### def is_json(json_data): try: real_json = json.loads(json_data) is_valid = True except ValueError: is_valid = False return is_valid ##################################################################################### # Class : UserProfileAPIView # Purpose : Implements CRUD using a single endpoints # Workflow : Maps the incoming response (get, post, put, patch, delete) to a method # defined below. … -
Check if is in top value django queryset
I have a django model class City(models.Model): user = models.ForeignKey(User) name = models.CharField() assets = models.PositiveIntegerField() How can I get the first three rows by user? -
Django update_fields not ignoring foreign key on update
When providing the fields for the update_fields parameter I exclude foreign keys for an update. But django seems to include foreign keys causing a ValueError: Cannot assign "1": must be a instance. Take for instance a simple example #model.py class TagType(Model): tag_type = CharField(max_length=16) class Tag(Model): tag_name = CharField(max_length=16) type_fk = ForeignKey(TagType, on_delete=SET_NULL, null=True, related_name='type_fk') # views.py def foo(request): tag = Tag.objects.filter(pk=1) tag.tag_name = "Python" tag.save(update_fields=['tag_name']) I expected the update_fields to update the model with the provided fields, but instead it raises an error on 'type_fk'. ValueError cannot assign "1": 'Tag.type_fk' must be a 'TagType' instance. -
How to have django model utils Choices handle lowercase and uppercase
How can i use uppercase characters when adding a property with lowercase choices this is the payload im using Clover is capitalized but i want to know how i can have capitalized and lowercase Clover work at the same time using model_utils Choices "name": "Test", "pos_name": "Clover", class Tenant(TimeStampedModel): POS = Choices('square', 'clover', 'omnivore') pos_name = models.CharField(choices=POS, max_length=50, blank=True, default='') name = models.CharField(max_length=100) -
Filter Queryset on django-multiselectfield
I'm using django-multiselectfield since I have a legacy project, I need to do a Query about selected options, like I have 1-50 options that could be selected. I understand that since is a CharField I can lookup like this: from django.db.models import Q my_queryset.filter(Q(languages__icontains="0") | Q(languages__icontains="1")) But since there are 50 options, I don't think is a good approach to have 50 Q filters, maybe there is no other option since is just a library instead of a Django internal library, but maybe there is other approach about how to make Q filters dynamic, like counting the len of the Options and then put those values on the Q(languages__icontains="options") but I'm not sure if this is possible. -
how to fix __init__() takes 1 positional argument but 2 were given
i have a search form that return to the user the stored records. what i want is to be able to return the template name and based on the template name. if the template name == "create_folder_test.html" the query will filter on the class Folder if the template name == "blog/list.html" the query will filter on the class suspect what it happen is once the user submit the search form it display the below error : TypeError at /folder/search/ init() takes 1 positional argument but 2 were given Request Method: GET Request URL: http://127.0.0.1:8000/folder/search/?q=121 Django Version: 2.1.3 Exception Type: TypeError Exception Value: init() takes 1 positional argument but 2 were given Exception Location: C:\Users\LT GM\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py in _get_response, line 124 Python Executable: C:\Users\LT GM\AppData\Local\Programs\Python\Python37\python.exe Python Version: 3.7.1 Environment: Request Method: GET Request URL: http://127.0.0.1:8000/folder/search/?q=121 Django Version: 2.1.3 Python Version: 3.7.1 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', 'widget_tweaks', 'import_export'] Installed 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'] Traceback: File "C:\Users\LT GM\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py" in inner 34. response = get_response(request) File "C:\Users\LT GM\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response 126. response = self.process_exception_by_middleware(e, request) File "C:\Users\LT GM\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response 124. response = wrapped_callback(request, *callback_args, **callback_kwargs) Exception Type: TypeError at /folder/search/ Exception Value: init() takes 1 … -
Is it possible to parse datetime from CharField within a Django query?
When I was setting up my Django app, I created a CharField instead of DateTimeField for when an account is created. Is it possible to write a Django query that first parses the datetime from my CharField and then uses it in the filter? I know that I could do a migration, but I'm wondering if it's possible to achieve the same result without changing the field to a datetime field. from dateutil.parser import parse from datetime import datetime, timedelta # How I parse datetime from string normally account = Account.objects.get(id=1) datetime_from_string = parse(account.created) # How to filter by datetime with a proper DateTimeField time = datetime.now() - timedelta(hours=5) accounts = Account.objects.filter(created__lt=time) -
Display likers username in html template
I have added a user liking system, where a user can like posts. I have added this successfully, however can't seem to display the usernames of the people who liked the post. This is my current implementation. models.py class Post(models.Model): likes = models.ManyToManyField(User, related_name='likes') @property def total_likes(self): return self.likes.count() views.py def likepost(request, pk): if request.method == 'POST': user = request.user post = get_object_or_404(Post, pk=pk) if post.likes.filter(id=user.id).exists(): post.is_liked = True post.likes.remove(user) post.save() else: post.is_liked = False post.likes.add(user) post.save() return redirect('home') home.html {% for post in posts.all %} <form id="like__post" method="POST" action="{% url 'likepost' post.id %}"> {% csrf_token%} <input type="hidden"> </form> <div style="position: absolute; bottom:80px; left: 85px;"> {% if post.is_liked == True %} <a href="javascript:{document.getElementById('like__post').submit()}"><img src="{% static 'heartred.png' %}" width="35px" height="35px"></a> {% else %} <a href="javascript:{document.getElementById('like__post').submit()}"><img src="{% static 'heart.png' %}" width="33px" height="33px"></a> {% endif %} {% endfor %} So far. In my template i get this: auth.User.None -
django-plotly-dash argument in template
I need to send initial data from my template to my dash script. I found demo of it here looks like this: {</span>% plotly_app name="simpleexample-1" initial_arguments='{"dropdown-color": {"value": "green"}}' %} I need to do the same and do it like this: {% plotly_app name="SimpleExample" initial_arguments='{"id": {"value": "2"}}' %} but how i get in my dash script? (Id should be like variable (i need to use this in all project) ) -
Python sorted() does not work Error: 'list' object has no attribute 'META'
I am getting an error:'list' object has no attribute 'META' when I tried to use sorted() function, and have no idea how to solve it... def sort_by(): data = ['a', 'c', 'b', 'a', 'n', 'j', 'r', 'p', 'x', 'l'] r = sorted(data) print(r) return r -
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL
I have a problem when i deploy my django with wsgi, but not in dev mode, I use apache2 My user model is in authentification i've tried to migrate authentification first, but it doesn't work I've also already tried deleting the database, nothing's changed. Here is the stacktrace: AH00094: Command line: '/usr/sbin/apache2' AH00491: caught SIGTERM, shutting down AH00489: Apache/2.4.38 (Debian) mod_wsgi/4.6.5 Python/3.7 configured -- resuming normal operations AH00094: Command line: '/usr/sbin/apache2' [remote ::1:57132] mod_wsgi (pid=8791): Failed to exec Python script file '/home/roo/myproject/Challenges/Challenges/wsgi.py'. [remote ::1:57132] mod_wsgi (pid=8791): Exception occurred processing WSGI script '/home/roo/myproject/Challenges/Challenges/wsgi.py'. [remote ::1:57132] Traceback (most recent call last): [remote ::1:57132] File "/home/roo/myproject/venv/lib/python3.7/site-packages/django/apps/config.py", line 178, in get_model [remote ::1:57132] return self.models[model_name.lower()] [remote ::1:57132] KeyError: 'users' [remote ::1:57132] [remote ::1:57132] During handling of the above exception, another exception occurred: [remote ::1:57132] [remote ::1:57132] Traceback (most recent call last): [remote ::1:57132] File "/home/roo/myproject/venv/lib/python3.7/site-packages/django/contrib/auth/__init__.py", line 165, in get_user_model [remote ::1:57132] return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False) [remote ::1:57132] File "/home/roo/myproject/venv/lib/python3.7/site-packages/django/apps/registry.py", line 210, in get_model [remote ::1:57132] return app_config.get_model(model_name, require_ready=require_ready) [remote ::1:57132] File "/home/roo/myproject/venv/lib/python3.7/site-packages/django/apps/config.py", line 181, in get_model [remote ::1:57132] "App '%s' doesn't have a '%s' model." % (self.label, model_name)) [remote ::1:57132] LookupError: App 'authentification' doesn't have a 'Users' model. [remote ::1:57132] [remote ::1:57132] During handling of … -
__init__() takes 1 positional argument but 2 were given | TypeError at /accounts/login/$
I am using Django 2.2 and python 3. When I log in I am getting TypeError at /accounts/login/$ init() takes 1 positional argument but 2 were given Please Find the code of my login.html {% extends 'blog/base.html' % } {% block content %} <div class="jumbotron"> <h2>Please Login:</h2> <h3>(Must be SuperUser, please check with the site admin)</h3> {% if form.errors %} <p>Your Username and password didn''t match! Please try again. </p> {% endif %} <form action="{% url 'login' %}" method="POST"> {% csrf_token %} {{% form.as_p %}} <input type="submit" class="btn btn-btn-primary" value="Login"> <input type="hidden" name="next" value="{{next}}"> </form> </div> {% endblock %} Code of Urls.py urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), path('accounts/login/$',views.LoginView,name='login'), path('accounts/logout/$',views.LogoutView,name='logout',kwargs={'next_page':'/'}) ] Kindly help -
Plotly dash in Django with multiple users and same chart
I'm completely stuck and wasted so many hours of my life. I've been learning plotly dash in Django for about a week and I just can't find a way to get it to do what I want. I simply want to have a chart that multiple users can see and for it to update for all users when values change. The app will ask all users a question with a rating from 1 to 9. As each user votes a bar chart will show each user's score which they can all see. Can someone please point me in the right direction of a good example or tell me how it's done? -
How to revert objects using django-simple-history
In this answer, the user provided the following HistoricForm to revert an object to an earlier instance of the object: class HistoricForm(object): def __init__(self, *args, **kwargs): self.history_id = kwargs.pop('history_id', None) instance = kwargs.get('instance') if instance and self.history_id: kwargs['instance'] = self.get_historic_instance(instance) super(HistoricForm, self).__init__(*args, **kwargs) def get_historic_instance(self, instance): model = self._meta.model queryset = getattr(model, 'history').model.objects historic_instance = queryset.get(**{ model._meta.pk.attname: instance.pk, 'history_id': self.history_id, }).instance return historic_instance I have added this code to my models.py file, but I am now stuck about how to actually revert a model. The user stated, You can revert by showing the historic instance and save (this way you will post your historic data). I created a view and a corresponding template that shows all the versions of a given object in its history using django-simple-history. However, I don't understand how to allow the user to revert to one of these versions using the above form. Can someone please provide me some guidance? -
Django ORM. How to exclude old data?
I want to exclude unnessery old records from my queryset. I tried use annotate(Max('pc_users__created')), but this is not what i want. I think i should use 'group by' or something like that, but I can not understand how. Here's my models.py class Room(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) room_number = models.SmallIntegerField() def __str__(self): return f'Room №{self.room_number}' class UserProfiles(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100) def __str__(self): return f'{self.name}' class Pc(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) title = models.CharField(max_length=100) ram = models.SmallIntegerField() cpu = models.CharField(max_length=20) gpu = models.CharField(max_length=20) def __str__(self): return f'{self.title}' class PcUsers(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) pc = models.ForeignKey(Pc, on_delete=models.PROTECT, related_name='pc_users') user = models.ForeignKey(UserProfiles, on_delete=models.PROTECT) def __str__(self): return f'{self.pc}: {self.user}' class PcRooms(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) pc = models.ForeignKey(Pc, on_delete=models.PROTECT, related_name='pc_rooms') room = models.ForeignKey(Room, on_delete=models.PROTECT) def __str__(self): return f'{self.pc}: {self.room}' and views.py: from myapp.models import Pc def report(request): data = Pc.objects.values( 'id', 'title', 'pc_users__user__name', 'pc_rooms__room__room_number' ) return render(request, 'report.html', {'data': data}) Also here is my data from admin site I want exclude all repetitive records and keep all newest records. Like this +-------+------------+---------+---------+ | ID Pc | Pc Title | Pc User | Pc Room | +-------+------------+---------+---------+ | 1 | … -
Django: form not validating
I had a form working perfectly right, but now it doesn´t work anymore. Can´t detect what I had changed that is affecting this. The form with it´s inital data is showed correctly in the template, but for some reason it´s not validating in the view. The rest of the forms are working without problems. The model class OperacionK(models.Model): comprobante = models.CharField(max_length=200, help_text="", blank=True, null=True) destinatario = models.ForeignKey(Contactos, related_name='cliente', help_text="", blank=True, null=True, on_delete=models.CASCADE) estatus = models.ForeignKey(EstatusOperacionK, default=1, blank=True, null=True, on_delete=models.CASCADE) fecha = models.DateField(help_text="", default=datetime.date.today, blank=True, null=True) fecha_conf_comercial = models.DateField(help_text="", blank=True, null=True) fecha_conf_admin = models.DateField(help_text="", blank=True, null=True) fecha_conf_armado = models.DateField(help_text="", blank=True, null=True) fecha_conf_despacho = models.DateField(help_text="", blank=True, null=True) fecha_conf_entregado = models.DateField(help_text="", blank=True, null=True) fecha_conf_cobrado = models.DateField(help_text="", blank=True, null=True) fecha_conf_cerrado = models.DateField(help_text="", blank=True, null=True) condicion_de_pago = models.IntegerField(help_text="Tier", blank=True, null=True) forma_de_pago = models.ForeignKey(FormasDePago, related_name='cliente', help_text="", blank=True, null=True, on_delete=models.CASCADE) descuento_general = models.DecimalField(help_text="", decimal_places=2, max_digits=100, blank=True, null=True) numero_remito = models.CharField(max_length=200, default="TO-BE-DEFINED", help_text="", blank=True, null=True) total_operacion = models.DecimalField(help_text="", decimal_places=2, max_digits=100, blank=True, null=True) total_unidades = models.IntegerField(help_text="Tier", blank=True, null=True) creador = models.ForeignKey(get_user_model(), help_text="Usuario", blank=True, null=True, on_delete=models.CASCADE) condicion_despacho = models.TextField(max_length=500, help_text="En 48 hs", blank=True, null=True) material_extra = models.TextField(max_length=500, help_text="", blank=True, null=True) fecha_deseada_entrega = models.DateField(help_text="", blank=True, null=True) fecha_estimada_cobro = models.DateField(help_text="", blank=True, null=True) contacto_entrega = models.ForeignKey(Personas, related_name='Persona', help_text="", blank=True, null=True, on_delete=models.CASCADE) tipo_operacion = … -
Return Serialized data without storing one field in the database?
Assuming I have a model as follows: class MyModel(models.Model): value = models.TextField(null=True) And I have a serializer as follows: class MyModelSerializer(serializers.ModelSerializer): id = serializers.IntegerField(required=False, allow_null=True) class Meta: model = MyModel fields = ('value') Is it possible to pass a value to the serializer that is not saved in the database, just passed back in the exact same position? So if I send the application { 'value': 'true', 'uuid': '123' } It would return { 'id': 1, 'value': 'true', 'uuid': '123' } -
Communication between Python desktop app and remote Django server
Would it be possible to have two-way communication between a Python desktop application and a Django server, and if so what would be the best method? The Django server would host a page that allows a user to send commands to the desktop application and view the status of the desktop application. The desktop app would need to send status updates. I've looked into Channels with Django and the client would just need to create a TCP socket connection to send its data. I don't quite know how Django would send the required data to the client. Thanks for any help or input. -
Fixing Django-Haystack Exact Query
I'm trying to fix my Django-haystack search results to only return outputs of the exact query. The principal usecase is that a user enter is destination and get only the results that matches this given place. But the problem I have now is that when a user try for example, a query for "Mexico", the search results also returns information in "Melbourne" which is far from being user-friendly and accepted. What I've tried so far but still not working: My forms.py from haystack.forms import FacetedSearchForm from haystack.inputs import Exact class FacetedProductSearchForm(FacetedSearchForm): def __init__(self, *args, **kwargs): data = dict(kwargs.get("data", [])) self.ptag = data.get('ptags', []) self.q_from_data = data.get('q', '') super(FacetedProductSearchForm, self).__init__(*args, **kwargs) def search(self): sqs = super(FacetedProductSearchForm, self).search() # Ideally we would tell django-haystack to only apply q to destination # ...but we're not sure how to do that, so we'll just re-apply it ourselves here. q = self.q_from_data sqs = sqs.filter(destination=Exact(q)) print('should be applying q: {}'.format(q)) print(sqs) if self.ptag: print('filtering with tags') print(self.ptag) sqs = sqs.filter(ptags__in=[Exact(tag) for tag in self.ptag]) return sqs My search_indexes.py import datetime from django.utils import timezone from haystack import indexes from haystack.fields import CharField from .models import Product class ProductIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.EdgeNgramField( document=True, use_template=True, template_name='search/indexes/product_text.txt') … -
How to Set Rendered URL Endpoint
I know this is an easy problem, but I cannot seem to get it working properly. I recently changed the urlpatterns from mydomain.com/website/template to mydomain.com/template in my project. However, when I render pages, I am being redirected to the old pattern still. When I remove website from the URL, the page is render correctly. How can I render the page without website in the urlpattern? Would I make this change in urls.py or views.py? For the example below, I want the end result to be: mydomain.com/connectwise/search?search_query= I tried return render(request, '/search.html', context) but then the application does not recognize the URL endpoint and returns resource not found. views.py return render(request, 'website/search.html', context) urls.py (application) urlpatterns = [ path('connectwise/search', views.search_bar, name='search_bar'), ] urls.py urlpatterns = [ path('admin/', admin.site.urls), path('', include('website.urls')), ] -
Is it ever possible to delete a URL path : Django
I had in my urls.py file, url patterns for certain data processing requirements and later I realized that from among a bunch of them, one was not intended as its requirement had ceased. However, when I am trying to delete the particular line (the second pattern in the excerpt of the urls.py reproduced here), I am getting the following error at page load ('holding_list'): NoReverseMatch at /supp/holding_comp/ Reverse for 'holding_change' not found. 'holding_change' is not a valid view function or pattern name. I have checked all the references (I think) wherever the path might have been referred to (including the related template). urls.py path('supp/holding_comp/', views.HoldingListView.as_view(), name='holding_list'), ... ... path('supp/holding_comp/edit/<int:pk>/', views.HoldingUpdateView.as_view(), name='holding_change'), How do I delete the second url pattern (the one for "edit" view)? I tried to look for a similar query but failed to (may be for want of a suitable search string). Any clue will be appreciated. -
How to make swagger schema for file upload API in django-rest-framework using drf-yasg?
I am not able to find any support for making a schema for the file upload API. The Swagger UI must have a button allowing a tester to upload a file for testing purposes. I am using firebase as a database so serializers and models don't come into the picture. I am using only Django's rest framework. I have looked at drf-yasg's documentation that suggests using Operation for file upload. But It is a very abstract and obscure documentation. -
I'm working on a Django project that involves to create an online compiler for C++ code
I'm working on a Django project that involves to create an online compiler for C++ code. have the same for python code. Can anyone append it for C++ Thanks class New(View): template_name = 'webapp/new.html' form_class = SofaProjectForm def get(self,request): form = self.form_class(None) return render(request,'webapp/new.html',{'form':form}) def post(self,request): if request.method == 'POST': form = self.form_class(request.POST) code = request.POST['code'] run = runcode.RunPyCode(code) rescompil, resrun = run.run_py_code() resrun=resrun rescomp=rescompil if not resrun: resrun = 'No result!' else: code = default_py_code resrun = 'No result!' rescompil = "No compilation for Python" return render (request,'webapp/new.html'{'code':code,'resrun':resrun,'rescomp':rescomp})