Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Summing columns in Django with related fields
I'm trying to do some aggregation on some of my Django columns, but I'm getting an error I can't figure out. Here are my models (the relevant stuff anyways): class Fillup(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) date = models.DateField(default=date.today) trip_distance = models.FloatField(validators=[MinValueValidator(0.0)]) car = models.ForeignKey('Car',on_delete=models.CASCADE, related_name='fillups') class Car(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) name = models.CharField(max_length=25) So each Fillup object is essentially a tank of gas in a car, and what I want to do is get the total of the trip_distance column for each car. I've tried several things from various other StackOverFlow pages, but nothing seems to work. My first attempt was this adding this field to the Car Model: @property def distance_driven(self): return self.fillups.aggregate(sum('trip__distance')) But I just get the following error: TypeError: unsupported operand type(s) for +: 'int' and 'str' I also tried adding this to my serializer, but got the same error: distance_driven = serializers.SerializerMethodField() def get_distance_driven(self, ob): return ob.fillups.all().aggregate(sum('trip_distance'))['trip__distance'] Is there something I'm missing here? I don't understand why I'm getting that error when trying to sum a FloatField column. Any help would be greatly appreciated! -
How can I decrypt a Django password?
I have a simple website set up with Django, and I want to know how I can decrypt a password in order to access the Django Admin panel. Assuming I know the username, is it possible to decrypt the password so that I can access the account? Also here is the encryption if anyone wants to help: pbkdf2_sha256$260000$zWIVM50moQjtqcPoX5Fycd$X7Dq6BKX5lHiY9dnBlBdR3OGrJuREX5uSeCSbA4ZdaE= -
Why postgres changes the order after updating record django postgres
I'm updating a record in my Postgres database but I don't know why after updating the record Postgres changes the order of the updated row in the DB, I have attached the example below. views.py @api_view(['GET', 'PATCH']) def tag_detail(request, project_id, tag_id): if request.method == 'PATCH': tag = Tag.objects.get(project_id=project_id, pk=tag_id) tag.ship_date = request.data.get('ship_date', tag.ship_date) tag.save() return Response("ok") before update order: Record 1 Record 2 Record 3 let's assume we have updated "Record 2", so the order will be: Record 1 Record 3 Record 2 -
Sudden trouble connecting to consumer using Celery and CloudAMQP. Error message: BDB0210 celerybeat-schedule.db: metadata page checksum error
I am using CloudAMQP with Celery on Heroku to schedule tasks. When I push my code to Heroku, I am suddenly receiving the following error: BDB0210 celerybeat-schedule.db: metadata page checksum error consumer: Cannot connect to amqps://user:password@bonobo.rmq.cloudamqp.com:port/user: The read operation timed out. The thing is, it worked perfecty fine for like 3 months. The other day I'm suddenly getting this error. I've check the commits on Github, and there have been no adjustments to my settings. What could this error be then? My current Heroku configurations are: CELERY_BROKER_URL = "amqps://user:password@bonobo.rmq.cloudamqp.com:port/user" CELERY_RESULT_BACKEND = "rpc://" CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' My Procfile reads: web: gunicorn project_settings.wsgi --log-file - worker: celery -A project_settings worker --beat -
Archive records and re-inserting new records in Django?
I've got a Stock table and a StockArchive table. My Stock table consists of roughly that 10000 stocks that I update daily. The reason I have a StockArchive table is because I still wanna some historic data and not just update existing records. My question is, is this a proper way of doing it? First, my models: class Stock(models.Model): objects = BulkUpdateOrCreateQuerySet.as_manager() stock = models.CharField(max_length=200) ticker = models.CharField(max_length=200) exchange = models.ForeignKey(Exchange, on_delete=models.DO_NOTHING) eod_price = models.DecimalField(max_digits=12, decimal_places=4) currency = models.CharField(max_length=20, blank=True, null=True) last_modified = models.DateTimeField(blank=True, null=True) class Meta: db_table = "stock" class StockArchive(models.Model): objects = BulkUpdateOrCreateQuerySet.as_manager() stock = models.ForeignKey(Stock, on_delete=models.DO_NOTHING) eod_price = models.DecimalField(max_digits=12, decimal_places=4) archive_date = models.DateField() class Meta: db_table = "stock_archive" I proceed on doing the following: @transaction.atomic def my_func(): archive_stocks = [] batch_size = 100 old_stocks = Stock.objects.all() for stock in old_stocks: archive_stocks.append( StockArchive( stock=stock.stock, eod_price = stock.eod_price, archive_date = date.today(), ) ) # insert into stock archive table StockArchive.objects.bulk_create(archive_stocks, batch_size) # delete stock table Stock.objects.all().delete() # proceed to bulk_insert new stocks I also wrapped the function with a @transaction.atomic to make sure that everything is committed and not just one of the transactions. Is my thought process correct, or should I do something differently? Perhaps more efficient? -
Reverse for 'new-quiz' with arguments '(11, '')' not found. 1 pattern(s) tried: ['course/(?P<course_id>[^/]+)/(?P<module_id>[^/]+)/quiz/newquiz$']
here is my code views.py from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from django.http import HttpResponseForbidden from quiz.forms import NewQuizForm, NewQuestionForm from quiz.models import Answer, Question, Quizzes, Attempter, Attempt from courses.models import Module from completion.models import Completion # Create your views here. def NewQuiz(request, course_id, module_id): user = request.user module = get_object_or_404(Module, id=module_id) if request.method == 'POST': form = NewQuizForm(request.POST) if form.is_valid(): title = form.cleaned_data.get('title') description = form.cleaned_data.get('description') due = form.cleaned_data.get('due') allowed_attempts = form.cleaned_data.get('allowed_attempts') time_limit_mins = form.cleaned_data.get('time_limit_mins') quiz = Quizzes.objects.create(user=user, title=title, description=description, due=due, allowed_attempts=allowed_attempts, time_limit_mins=time_limit_mins) module.quizzes.add(quiz) module.save() return redirect('new-question', course_id=course_id, module_id=module_id, quiz_id=quiz.id) else: form = NewQuizForm() context = { 'form': form, } return render(request, 'quiz/newquiz.html', context) def NewQuestion(request, course_id, module_id, quiz_id): user = request.user quiz = get_object_or_404(Quizzes, id=quiz_id) if request.method == 'POST': form = NewQuestionForm(request.POST) if form.is_valid(): question_text = form.cleaned_data.get('question_text') points = form.cleaned_data.get('points') answer_text = request.POST.getlist('answer_text') is_correct = request.POST.getlist('is_correct') question = Question.objects.create(question_text=question_text, user=user, points=points) for a, c in zip(answer_text, is_correct): answer = Answer.objects.create(answer_text=a, is_correct=c, user=user) question.answers.add(answer) question.save() quiz.questions.add(question) quiz.save() return redirect('new-question', course_id=course_id, module_id=module_id, quiz_id=quiz.id) else: form = NewQuestionForm() context = { 'form': form, } return render(request, 'quiz/newquestion.html', context) def QuizDetail(request, course_id, module_id, quiz_id): user = request.user quiz = get_object_or_404(Quizzes, id=quiz_id) my_attempts = Attempter.objects.filter(quiz=quiz, user=user) context = { … -
Django smart selects chain 2 models with country list that is not its own model
I have 3 models CompanyRole, Office and extended user model - and have successfully implemented django smart selects package and have created a ChainedForeignKey select from Office to CompanyRole. CompanyRole model having records employee and freelance and Office model having the office name and companyrole field for employee only - this works as expected as in dropdown for companyrole user selects employee then in dropdown for offcies will be populated but if freelance selected from company role dropdown then nothing will be populated in office dropdown. However, I also have a field in user model called location and country field in office model which populates a country list from django_countries package so did not have to create a model for countries. Please see my models.py file below: models.py from django.db import models from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager from django_countries.fields import CountryField from smart_selects.db_fields import ChainedForeignKey class CompanyRole(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class Office(models.Model): company_role = models.ForeignKey(CompanyRole, on_delete=models.CASCADE) country = CountryField(null=True) name = models.CharField(max_length=30) def __str__(self): return self.name class User(AbstractBaseUser, PermissionsMixin): email = models.EmailField(_('email address'), unique=True) username = models.CharField(max_length=150, unique=True) first_name = models.CharField(max_length=150) last_name = models.CharField(max_length=150) start_date = models.DateTimeField(default=timezone.now) comments = … -
Django sum of a particular field for some distinct column
I have a table OrderTransaction which has foreign key for table Order. I want to calculate the outstanding amount i.e. the amount for which transaction has not yet occurred. To calculate that I first need to calculate the total amount (Order table has field total amount) so that I can subtract the amount of transaction that has taken place from it. I am grouping by the the query by recorded_by field because I need to know what salesman has collected how much amount. Following is my query. order_transaction_qs .exclude(recorded_by=None) .order_by("recorded_by") .values("recorded_by") .annotate( cash_in_hand=Coalesce( Sum("amount", filter=Q(payment_method=PaymentMethod.CASH_ON_DELIVERY)), Value(0) ), cheque=Coalesce( Sum("amount", filter=Q(payment_method=PaymentMethod.CHEQUE)), Value(0) ), others=Coalesce( Sum( "amount", filter=~Q( payment_method__in=[ PaymentMethod.CHEQUE, PaymentMethod.CASH_ON_DELIVERY, ] ), ), Value(0), ), order_amount=Sum( "order__total_amount" ), # NOTE: Multiple transactions on same orders will give extra amount. outstanding=ExpressionWrapper( F("order_amount") - (F("cash_in_hand") + F("cheque") + F("others")), output_field=FloatField(), ), ) The problem with above query is that if there are multiple transaction for same order, it is adding the total_amount multiple times. Please suggest me what to do. -
'QuerySet' object has no attribute 'pesel'
I'm new with django. I'm really confused with views. Here is my models.py class Pacjent(models.Model): name= models.CharField(max_length=30) surname = models.CharField(max_length=30) pesel = models.ForeignKey(Pesel, on_delete=models.CASCADE) birth = models.DateField(datetime.date) Here is my views.py: def pacjent_view(request): obj =Pacjent.objects.all() context={'pesele': obj.pesel} return render(request,'PrzychodniaZdrowia/kartapacjenta.html',context) An error is displayed when trying to start: "Exception Value: 'QuerySet' object has no attribute 'pesel'". What is wrong with this code? How do I display this model on the website? -
Why am I getting a Django Type Error when using Taggit?
So I am following a digital book on how to add tags to Django using Taggit. The List page is also using Paginator, but what is happening is I am getting this Type Error when I click on one of the tags which is supposed to take you to keep you on the list page, but list the number of posts with the same tag. Please let me know if you need more information from me. I really appreciate all of your help. I'm excited because this is my first real Django project, creating a blog for a friend and so far things are coming along well except for this one issue that is beyond me. I also want to learn how to be able to look at error screens and know what to look for and then how to solve my own issues one day. Thanks again! Chris This is the Error Screen Shot views.py from django.shortcuts import render, redirect, get_object_or_404 from django.views.generic import ListView from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.db.models import Count from taggit.models import Tag from .models import Post from .forms import PostForm class PostListView(ListView): queryset = Post.published.all() context_object_name = 'posts' paginate_by = 3 template_name … -
Django filter results on foreign key
I am attempting to display a list of notes that are attached to a project. I can display the individual project the notes are linked to but I am not able to figure out how to display only the notes related to the project. My models are: class Project(models.Model): title = models.CharField(max_length= 200) description = models.TextField() def __str__(self): return self.title class ProjectNotes(models.Model): title = models.CharField(max_length=200) body = models.TextField() date = models.DateField(auto_now_add=True) project = models.ForeignKey(Project, default=0, blank=True, on_delete=models.CASCADE, related_name='notes') def __str__(self): return self.title The views: from django.shortcuts import get_object_or_404, render from django.urls.base import reverse from django.views.generic import ListView, DetailView from django.views.generic.edit import CreateView from .models import Project, ProjectNotes class CompanyProjects(ListView): model = Project template_name = 'company_accounts/projects.html' class CompanyProjectsDetailView(DetailView): model = Project id = Project.objects.only('id') template_name = 'company_accounts/project_detail.html' context_object_name = 'project' class ProjectNotes(ListView): model = ProjectNotes template_name = 'company_accounts/project_notes.html' def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super().get_context_data(**kwargs) context['project'] = get_object_or_404(Project, id=self.kwargs.get('pk')) return context class ProjectNotesDetailview(DetailView): model = ProjectNotes template_name = 'company_accounts/project_note_detail.html' The template displays the correct project: {% extends 'base.html' %} {% block content %} <h1>Notes</h1> {{ project }} {% for note in notes %} <div class ="projectnotes-entry"> <h2><a href="">{{ note.title }}</a></h2> <p>{{ note.body … -
How do I link a Django foreign key selected in a form with an inline form?
Introduction Hello! I am a self-taught novice python/Django coder working on my family business truck maintenance Django app. I have some of the basics of Django and python3 down, but other basics escape me as everything I am learning has been done for practicality sake and not built from the foundations of these languages. I have the following types of models: Truck - a single truck Service - a single instance of a repair/maintenance service for a single truck Photo - a single picture from the photologue app PhotoExtended - an add-on model one-to-one with Photo where it can be linked to a truck and/or a service. A photo will ALWAYS be associated with a truck, but may or may not be associated with a service. relevant models.py: class PhotoExtended(models.Model): # Link back to Photologue's Photo model. photo = models.OneToOneField(Photo, related_name='extended', on_delete=models.RESTRICT) truck = models.ForeignKey('Truck', on_delete=models.CASCADE, default = DEFAULT_TRUCK_ID, help_text="Truck in the picture.") service = models.ForeignKey('Service', on_delete=models.PROTECT, null=True, blank=True, help_text="Service being performed or finished in the picture.") receipt = models.BooleanField(help_text="Is the picture for a receipt?", null=True, default=False) # Boilerplate code to make a prettier display in the admin interface. class Meta: verbose_name = u'Associated photo' verbose_name_plural = u'Associated photos' def … -
Why i get an error in django host.py file?
from django.conf import settings from django_hosts import patterns, host host_patterns = patterns('', host(r'www',settings.ROOT_URLCONF, name='www'), ) And when it runs it brings:: Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in start(fakepyfile,mainpyfile) File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start exec(open(mainpyfile).read(), main.dict) File "", line 7, in File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/django/conf/init.py", line 56, in getattr self._setup(name) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/django/conf/init.py", line 37, in _setup raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting ROOT_URLCONF, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. [Program finished] -
Git Hub we don't support that file type
I am trying to add some django project files to my github repository but for some reason github keeps saying it doesn't support the file types of my project -
How to enable css suggestions in django-html file in vscode?
Similar hints are available in html files I want to get them in django-html as well. Is there any way to enable them? I installed the following extension for vs code and enabled emmet support in django-html https://github.com/vscode-django/vscode-django -
How to check if FileField was uploaded?
I wanna store the "original" file name of an upload. This is because the file gets stored with a uuid as a new name. So I wrote this for my model: def save(self, *args, **kwargs): if self.file: self.original_filename = self.file.name super(MediaFile, self).save(*args,**kwargs) However, it also stores the filename to self.original_filename when nothing new has been uploaded. Thus the original_filename becomes the uuid the second time i save this model (e.g updating some other field in the admin). How to check in the save function if the FileField was really updated and a file has been uploaded? If possible I'd like to perform this check in the model so mit will work both for admin and custom upload pages. -
How do I set ProductDetail Page for different categories of product In Django?
I am new to Django. I am building a web store app. Case 1: I have a category for Phones with these Model: 'title', 'description', 'price', 'front camera', 'back camera', Case 2: I have another category for accessories with these Model: 'title', 'price', 'description', 'type' The problem: They both share the same ProductDetail Page...accessories detail is showing front and back camera as features which is akward although both are set to none. The Ask: How can I render different ProducDetail Page for different Categories -
Django ORM join on subquery
I have this two models: class Order(models.Model): value= models.FloatField() customer = models.ForeignKey( Customer, on_delete=models.CASCADE, related_name="orders" ) class Customer(models.Model): name = models.CharField(max_length=300, unique=True) and i want to annotate the sum of total orders purchased by the customer, this could be done pretty straightforward with this query: customer_total_subquery = Subquery( Customer.objects.filter(pk=OuterRef("customer")) .annotate(total=Coalesce(Sum("orders__value"), 0.0, output_field=FloatField())) .values("total") ) Order.objects.select_related("customer").all().annotate(customer_total=customer_total_subquery) The problem is, for only 37000 orders, this query takes 4 minutes. Produced query: SELECT "order"."id", (SELECT COALESCE(SUM(U1."order_value"), 0.0) AS "total" FROM "customer" U0 LEFT OUTER JOIN "order" U1 ON (U0."id" = U1."customer_id") WHERE U0."id" = "order"."customer_id" GROUP BY U0."id") AS "customer_total" FROM "order" LEFT OUTER JOIN "customer" ON ("order"."customer_id" = "customer"."id") We can see that there is a subquery that is executed once per row, so the customer_total subquery is executed 37000 times. The ideal solution is to query only once and use this results to append on the main query, the query bellow takes less than 100 ms: SELECT o.id, o.customer_id, subquery.customer_total from order as o left join ( select b.id, SUM(inner_order.value) as customer_total from customer b left join order inner_order on (inner_order.customer_id= b.id) group by b.id ) subquery on (subquery.id = o.customer_id) Is it possible to achieve this query (join on subquery) … -
Custom function for annotate
I am trying to extract records with my Django ORM Model: users = User.objects.values( "first_name", "last_name" ).annotate( user_level=custom_levels( F("user_level" ) ) ); The model is represented by: first_name last_name user_level: it may be [1] or [1,13] (it comes from saving a MultipleSelect throught forms.py) Goal: My goal is to process user_level in the query in order to transform those ids in text (I have a dict key:value with those ids). Any clue? Thank you -
How to create an Elasticsearch index for every instance of a Django models variable
In my Django models, for a model class named User there's a variable defined for user_id and I want to create a separate index for each and every customer using the user id. How do I modify this so that it creates a separate index based on the user_id? index_create = es.index(index="test_index", doc_type="docs", body= map_doc) #map_doc is defined elsewhere. I am trying to use this to store data in a separate index for separate users whenever this is invoked. -
email verification in django during registration
I had created Registration API which takes email and password and confirms password,and I achieved this by simply adding some lines in setting.py ACCOUNT_AUTHENTICATION_METHOD = "email" ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_USERNAME_REQUIRED = False and urls.py urlpatterns = [ path('admin/', admin.site.urls), path('',include('mydata.urls')), path('auth/', include('rest_auth.urls')), path('auth/registration/', include('rest_auth.registration.urls')), ] I did not make any other changes in model.py and serializer.py, Now what to do next for email verification? Are there any simple steps to achieve this? -
Django Admin template and form change list
I have a strange behavior with the admin interface. I have a form (FioleListForm) with the following init, basically prefilter foreign keys. def __init__(self, *args, **kwargs): super(FioleListForm, self).__init__(*args, **kwargs) instance = kwargs.get('instance') if instance: if instance.lot: self.fields['lot'].queryset = Lot.objects.filter(Q(produit__id=instance.produit.id, shelf_life__gt=now().date(), stock__gt=instance.dose) | Q(id=instance.lot.id)) else: self.fields['lot'].queryset = Lot.objects.filter(Q(produit__id=instance.produit.id, shelf_life__gt=now().date(), stock__gt=instance.dose)) On the admin side, I have the following: @admin.register(Fiole) class FioleAdmin(VersionAdmin): change_list_template = 'admin/flacoTIapp/fiole/change_list.html' def get_changelist_form(self, request, **kwargs): return FioleListForm My issue is change_list_template is overriding the form. Thus the foreign key prefilter is not working. And if I do not put "change_list_template", Django is using the Django Admin contrib template. Thank you for your help. -
Javascript files in django have 404 error on Chrome
I think my javascript files are somehow not being read by Chrome. In the "Network" section of the developer tools (inspect) in Chrome, my js file has a status 404 and is colored red. The below script is the code in my html file: <script src="js/checkout.js" type="text/javascript"></script> The src path is correct, because vscode shows me the correct js file when I click the src=js/checkout.js of the script tag. I removed all cache from the browser, but the problem still persists. I hope you can guys can help me, and please leave a question if you have one. -
How to show only related objects in a django admin model
In a django admin model with inlines other admin model I want to show only related objects. simplified example: class Business(models.Model): name = models.TextField() class BusinessAddress(models.Model): business = models.ForeignKey(Business) address = models.TextField() class Pos(models.Model): business = models.ForeignKey(Business) label = models.TextField() class PosAddress(models.Model): pos = models.ForeignKey(Pos) address = models.ForeignKey(Address) So I want to retrieve only the related addresses of the selected pos in PosAddress and not all the available addresses class PosAddressAdmin(admin.ModelAdmin): model = PosAddress extra = 1 class PosAdmin(admin.ModelAdmin): model = Pos inlines = [PosAddressAdmin] How is that possible, if it is possible? -
'tuple' object has no attribute '_meta'
why is my queryset throwing this error whenever i make a search to the backend of account object ? def auto_search(request): user = request.user search_query = request.GET.get('q') payload = [] if search_query : search_results = Account.objects.filter(email__icontains=search_query).filter(username__icontains=search_query).distinct() user = request.user if user.is_authenticated: # get the authenticated users friend list auth_user_friend_list = FriendList.objects.get(user=user) for account in search_results: payload.append((account, auth_user_friend_list.is_mutual_friend(account))) payload = serializers.serialize('json',payload) return JsonResponse({'status':200 , 'data':payload}) Account model.py class Account(AbstractBaseUser): email = models.EmailField(unique=True) username = models.CharField(max_length=150, unique=True) first_name = models.CharField(max_length=150,blank=True) profile_image = models.ImageField(max_length=255,upload_to=get_profile_image_filepath, null=True, blank=True, default=get_default_profile_image) last_name = models.CharField(max_length=150,blank=True) phone_number = models.CharField(max_length=50, unique=True) date_of_birth = models.DateField(blank=True, null=True) friendlist models.py class FriendList(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user") friends = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="friends") # set up the reverse relation to GenericForeignKey notifications = GenericRelation(Notification)