Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to sort a column by Django model method using django-sortable-listview (SortableListView)?
Using django-sortable-listview package, I'm using SortableListView to sort out all the model fields. In my case, more than model fields, I want to sort it out by model method too. Models.py class Employee(models.Model): name = models.CharField() designation = models.CharField() company = models.ForeignKey(Company) team = models.CharField() # method def team_count(self): count = len(Employee.objects.filter(team=self.team)) return count Views.py class EmployeeListView(SortableListView, generic.list.ListView): allowed_sort_fields = {'name': {'default_direction': '', 'verbose_name': 'Employee Name'}, 'designation': {'default_direction': '', 'verbose_name': 'Designation'}, 'team': {'default_direction': '', 'verbose_name': 'Team Name'}, 'team_count()': {'default_direction': '', 'verbose_name': 'No of Team members'}} default_sort_field = 'name' queryset = Employee.objects.all() paginate_by = 10 On the above example, I want to list out Employee name, designation, team name and count of team members. Anybody help me to sort 'team_count' column? -
how to iterate through an array in the Django database
Help please ) I create a local site for myself . A new user is created during registration . After that, you need to log in to your account, you just need to search for an element with the entered name and that's it . Then I don't know how to find the same element in other views . So I want that after registration at the entrance, the array is moved and this element becomes at the end , where I can easily call it using -id -
template not displaying information - django
I can't figure out why my data won't display in my user.html template. From reviewing the code it looks like everything is linked correctly. The users.html page is showing up on the website minus the information about {{ user.order_set.all }}. I have highlighted the code I believe relates to the issue. Any guidance would be greatly appreciated, thanks! user.html - html for displaying the data {% extends "fuisce/base.html" %} {% block content %} **{{ user.order_set.all }}** {% endblock content %} views.py - order from django.shortcuts import render, HttpResponseRedirect from django.urls import reverse # Create your views here. from carts.models import Cart from .models import Order from users.models import Profile from .utils import id_generator **def orders(request): context = {} template = "orders/user.html" return render(request, template, context)** def checkout(request): try: the_id = request.session['cart_id'] cart = Cart.objects.get(id=the_id) except: the_id = None return HttpResponseRedirect(reverse("cart")) new_order, created = Order.objects.get_or_create(cart=cart) if created: new_order.order_id = id_generator() new_order.save() my_p = Profile.objects.get(user=request.user) new_order.user = my_p new_order.save() if new_order.status == "Finished": # cart.delete() del request.session['cart_id'] del request.session['items_total'] return HttpResponseRedirect(reverse("cart")) context = {} template = "fuisce/about.html" return render(request, template, context) models.py - orders from django.db import models # Create your models here. from carts.models import Cart from users.models import Profile STATUS_CHOICES … -
Absolute paths on images uploaded by django-ckeditor
I am using django-rest-framework in conjuntion with django-ckeditor. I'm serving some images with absolute url-s without any problem. But images and files uploaded by ckeditor are served as relative paths, and they can't be displayed client side since it is in a different domain. Here is an example of what I'm getting: { image: "http://example.com/media/myimage.png", body: "<p><a href=\"/media/ckeditor/myfile.pdf\">download my file</a></p>" } And this is what I woul like to get: { image: "http://example.com/media/myimage.png", body: "<p><a href="http://example.com/media/ckeditor/myfile.pdf\">download my file</a></p>" } -
Slack bot sending messages two times when only one was called
Im currently building a simple web page with django that runs some code on the back. For running certaing methods, I created a slack bot. Let me explain the process From some channel, a user can type @Orchestrator help And they will receive a response with the commands the bot has. One of the commands is start_recon, so the message looks like this @Orchestrator start_recon <some_target> This is received by a endpoint called slack_in, which looks like this @csrf_exempt @require_POST def slack_input(request): data = request.body data = json.loads(data.decode()) if 'challenge' in data: return JsonResponse({'challenge': data}) response = slack_receiver.receive_bot_message(data) return HttpResponse(status=response) This then get parsed with receive_bot_message and from there the different tasks start. Expected behaviour: Both @Orchestrator help and @Orchestrator start_recon <target> send one request to the slack_in endpoint Actual behaviour @Orchestrator start_recon <target> is sending 2 identical requests but @Orchestrator help is sending one. -
Trying to resolve no such column: blog_comment.url
Once a user had logged into my site he could write a post and update it. Then I was making progress in adding functionality which allowed people to make comments. I was at the stage where I could add comments from the back end and they would be accurately displayed on the front end. Now when I try and update posts I get an error message. Originally I thought the problem was because I had not included a slug field in my class called Comments. Then I added url= models.SlugField(max_length=500, unique=True, blank=True). Do I now need to reset the database linked to this class? If so how do I achieve that? Or am I going off at a massively incorrect tangent? models.py from django.db import models from django.utils.text import slugify from django.utils import timezone from django.contrib.auth.models import User from django.urls import reverse # Create your models here. class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() date_posted = models.DateTimeField(default=timezone.now()) author = models.ForeignKey(User, on_delete=models.CASCADE) url= models.SlugField(max_length=500, unique=True, blank=True) def save(self, *args, **kwargs): self.url= slugify(self.title) super().save(*args, **kwargs) def __str__(self): return self.title def get_absolute_url(self): return reverse('article_detail', kwargs={'slug': self.slug}) class Comment(models.Model): post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments') name = models.CharField(max_length=80) email = models.EmailField() body = models.TextField() created_on = … -
Is there a website or YouTube instructor that goes over Django groups and permissions? [closed]
I'm curious if anyone has a list of websites/books/youtube instructors that go over groups and permissions in Django? I will eventually be building a site that will restrict certain users to certain content. -
Are these the steps followed on setting up Django application with Ngnix & Gunicorn ? Please tell me If I am missing or wrong somewhere [closed]
User’s request comes to Ngnix. Ngnix forwards request to gunicorn through a socket (Socket A) Gunicorn sends request to django.core.handlers.wsgi through another socket (Socket B) where an application object (or callable) is created which is used by Gunicorn for every request . Then a list of request and response middleware callables is created on wsgi callable object. Request middleware is applied. If it sends a response, it is returned to the user. urlresolvers.resolve finds the view function to use. View middleware is applied. If response comes, it is sent back to the user. View function is called. It talks to models to do business logic, and renders the templates. The response middleware is applied, and response is sent back to the users -
Django ORM. Select only duplicated fields from DB
I have table in DB like this: MyTableWithValues id | user(fk to Users) | value(fk to Values) | text | something1 | something2 ... 1 | userobject1 | valueobject1 |asdasdasdasd| 123 | 12321 2 | userobject2 | valueobject50 |QWQWQWQWQWQW| 515 | 5555455 3 | userobject1 | valueobject1 |asdasdasdasd| 12345 | 123213 I need to delete all objects where are repeated fields user, value and text, but save one from them. In this example will be deleted 3rd record. How can I do this, using Django ORM? PS: try this: recs = ( MyTableWithValues.objects .order_by() .annotate(max_id=Max('id'), count_id=Count('user__id')) #.filter(count_id__gt=1) .annotate(count_values=Count('values')) #.filter(count_icd__gt=1) ) ... ... for r in recs: print(r.id, r.count_id, , r.count_values) it prints something like this: 1 1 1 2 1 1 3 1 1 ... Dispite the fact, that in database there are duplicated values. I cant understand, why Count function does not work. Can anybody help me? -
Django 3 Problem with concatenating inside a template tag
I want to concatenate a string inside a template in Django (version 3). I have read everything I could find on the subject and found that this should be the way: {{ "ST" | add: item.id | stringformat:"08d" }} But it produces the error: django.template.exceptions.TemplateSyntaxError: add requires 2 arguments, 1 provided Can anybody shed light into my darkness? -
Django & Certbot - unauthorized, Invalid response (HTTPS)
I'm trying to configure Certbot (Letsencrypt) with Nginx. I get this error : - The following errors were reported by the server: Domain: koomancomputing.com Type: unauthorized Detail: Invalid response from http://koomancomputing.com/.well-known/acme-challenge/xvDuo8MqaKvUhdDMjE3FFbnP1fqbp9R66ah5_uLdaZk [2600:3c03::f03c:92ff:fefb:794b]: "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>" Domain: www.koomancomputing.com Type: unauthorized Detail: Invalid response from http://www.koomancomputing.com/.well-known/acme-challenge/T8GQaufb9qhKIRAva-_3IPfdu6qsDeN5wQPafS0mKNA [2600:3c03::f03c:92ff:fefb:794b]: "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>" To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. in /etc/nginx/sites-available/koomancomputing : server { listen 80; server_name koomancomputing.com www.koomancomputing.com; location = /favicon.ico { access_log off; log_not_found off; } location /staticfiles/ { root /home/kwaku/koomancomputing; } location /media/ { root /home/kwaku/koomancomputing; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } } my DNS A/AAAA records : I didn't know what to do, so I did a search and find django-letsencrypt app, but I don't know hot to use : -
edit a manytomany relation
I have two models in my django app related by manytomany relationship. I created an edit function but it's not working or to be precise it's not able to render the formset Models.py class Player(models.Model): pname = models.CharField(max_length=50) hscore = models.IntegerField() age = models.IntegerField() def __str__(self): return self.pname class Team(models.Model): tname = models.CharField(max_length=100) player= models.ManyToManyField(Player) def __str__(self): return self.tname Forms.py class PlayerForm(forms.ModelForm): class Meta: model = Player fields = '__all__' PlayerFormset= formset_factory(PlayerForm) class TeamForm(forms.ModelForm): player= PlayerFormset() class Meta: model = Team fields = '__all__' exclude = ["player"] Views.py def updateTeam(request,pk): team = Team.objects.get(id=pk) form = TeamForm(instance=team) if request.method == "POST": form = TeamForm(request.POST, instance=team) if form.is_valid(): form.save() context = {'form': form} return render(request, 'packsapp/employee/new.html', context) The above code renders the team name in the form but not the related players. -
Windows equvalent unix command
I got django delete migrations command in reset migration and that is find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete now need these twos equivalent windows command. -
Multiple file upload in django class based view
In django I have completely used class based view, now I want to allow users to upload multiple files (I have successfully working website to upload one file) In documentation I can find answer for forms from scratch or form model(forms.Model) But not for model forms (models.Model) -
ERRORS: <class 'main.admin.HomePageAdmin'>: (admin.E012) There are duplicate field(s) in 'fieldsets[0][1]'
i'm getting this error when i try to run migrations in my django cartridge ecommerce website: this is my model.py file from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext, ugettext_lazy as _ from django.db import models from mezzanine.pages.models import Page from mezzanine.core.models import Orderable from mezzanine.core.fields import FileField, RichTextField from mezzanine.core.models import SiteRelated from cartridge.shop.models import Product from datetime import datetime from mezzanine.utils.timezone import get_best_local_timezone from mezzanine.conf import settings from pytz import timezone @python_2_unicode_compatible class SiteConfiguration(SiteRelated): """Singleton model for storing site-wide variables.""" logo = FileField("Logo", upload_to="site", format="Image", blank=True) logo_small = FileField( _("Small Logo"), upload_to="site", format="Image", blank=True ) favicon = FileField( _("Favicon"), upload_to="site", blank=True, help_text=_("An image that appears in the browser tab") ) footer_address = RichTextField( default=_("Our address"), help_text=_("Company address displayed in footer.")) footer_subscribe_info = models.CharField( max_length=200, default=_("Pellentesque habitant morbi tristique senectus et netus \ et malesuada fames ac turpis egestas."), help_text=_("Text displayed above the subscription email field.") ) def __str__(self): return str(self.site) class Meta: verbose_name = verbose_name_plural = _("Site Configuration") class Homepage(Page): """Main class for homepage.""" product_heading = models.CharField( max_length=100, default=_("Hot This Week"), help_text=_("A header displayed above the products.") ) second_slider_heading = models.CharField( max_length=100, default=_("GET INSPIRED"), help_text=_("A header displayed above the 2nd slider.") ) second_slider_subheading = … -
How to use get_fields() to access M2M field values
I am using get_fields() to produce a dict of all model field names and values: def get_model_fields(self, obj, fields): model_fields = {} for f in self.model._meta.get_fields(include_hidden=True): value = getattr(obj, f.name) model_fields.append({ 'label': f.verbose_name 'name': f.name, 'help_text': f.help_text, 'value': value, 'class': str(f.__class__)}) This works well except for ManyToMany fields, where the label, name, help_text and class all display fine, but the value returns [modelname].None, despite it containing values. How can I add the values of the ManyToMany field to this function? -
Celery tasks sending to different queues is not working
My use case is to add use multiple queues for different tasks So that all upload_photos task is sent to one queue and upload_phone_number to another queue since upload task is a heavy task, I don't want an upload phone number to be affected by upload_photos, even though I am using different queues, upload_phone_number task is waiting till the execution of upload photos. Is this the right way of writing multiple queues CELERY_QUEUES = ( Queue('fast', Exchange('fast'), routing_key='fast'), Queue('default', Exchange('default'), routing_key='default') ) CELERY_ROUTES = { 'upload_phone_number': { 'exchange': 'fast'` 'exchange_type': 'direct', 'routing_key': 'fast' }, 'upload_photos': { 'exchange': 'default', 'exchange_type': 'direct', 'routing_key': 'default' }, } This is my celery task @app.task(name="upload_phone_number") def upload_photos(): @app.task(name="upload_phone_number") def upload_phone(): -
UNIQUE constraint failed on Posting form
I am trying to post a simle form to create a user. but whenever i try to save the form data it always gives me UNIQUE constraint failed error even if i pass the new mobile number that does not exist on database. ERROR IS: UNIQUE constraint failed: core_user.mobile_no models.py Manager Class is: class UserManager(BaseUserManager): def create_user(self, username, password=None, **extra_fields): """Creates and saves a new user""" if not password: raise ValueError("User must have a password") if not username: raise ValueError("User must have an username") user = self.model(username=username, **extra_fields) user.set_password(password) user.save(using=self.db) return user def create_staff_user(self, username, password=None, **kwargs): user = self.create_user(username, password, is_staff=True, **kwargs) return user def create_super_user(self, username, password=None): user = self.create_user(self, username=username, password=password, is_staff=True, is_super_user=True) return user Model class is: class User(AbstractBaseUser): user_types = ( ("staff", "Staff"), ("super_user", "Super User"), ) first_name = models.CharField(max_length=100) middle_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) username = models.CharField(max_length=100, unique=True) email = models.EmailField() mobile_no = models.CharField(max_length=10, unique=True) is_active = models.BooleanField(default=True) # can login is_staff = models.BooleanField(default=False) # staff user is_super_user = models.BooleanField(default=False) # super user created_date = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'username' objects = UserManager() # USERNAME_FIELD and password are required by default REQUIRED_FIELDS = [] # e.g full_name def __str__(self): return self.username Views.py class UserCreationView(CreateView): … -
Allow user deletion but keep references to them
What is the standard way of allowing a user to delete their account from your website without removing any references to them, so that others can still see them? For example, how does Stack Overflow do it? I assume that, when you delete your account, your posts and answers aren't deleted as well? So how do they manage it? -
Django signals doesn't work with related name
I am trying to do it when foreignkey changed, but it doesn't work. I want to do something like m2m_changed but for foreign key. User model class User(AbstractUser): balance = models.FloatField(default=0) Transaction model class Transaction(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='transactions') order = models.OneToOneField('Payment.Order', on_delete=models.CASCADE, related_name='transaction') transaction_type = models.CharField(choices=[ ('transfer', 'Transfer'), ('received', 'Received'), ], max_length=20, default='transfer') created = models.DateTimeField(auto_now_add=True) Now I need when new transaction created under the user it collected to the balance. Signals code @receiver(pre_save, sender=User) def collect_transaction(sender, instance, **kwargs): balance = instance.transactions.aggregate(Sum('order__price')) print(balance) but when it work only when i update it from the user not the transaction. For example Transaction.objects.create(user=1, order=1, transaction_type='received') This code won't make the signals work. -
Return File Types in serializer
I have a model which contains array of pdf or image files as many to many field . I want to display the pdf or image in frontend . I want to return the array of files along with the model data in one response. My view now: def AssignmentModuleView(request, assignment_module, path): dict_obj = json.loads(serializers.serialize( 'json', [assignment_module]))[0] dict_obj["details"] = AssignmentModuleHelper( ).get_content(assignment_module) return JsonResponse(dict_obj, status=200, content_type='application/json') Here i could return the json response with the model details , but i cant serialize the files and return the files with content type other than json.How can i accomplish this? -
How can get a queryset and for each object get it queryset
for example I have these models : class Teacher(models.Model): ..... class Student(models.Model): teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE) ..... Now if I want get a values of teachers I can do it with : Teacher.objects.values("id", "name") but how can I add a queryset of students to the teachers queryset values? Note : I know I can do it by getting students queryset , but in this case I will have many duplicated teachers , so I just want each teacher and his students as array of objects -
Looping through nested dictionary in Django template
My context dictionary for my Django template is something like the following: {'key1':'1', 'key2':'2', 'key3':'3', 'key4':{'key5':{'key6':'6', 'key7':'7', 'key8':'8'}}} I would like to iterate through the dictionary and print something like: some label = 6 some label = 7 some label = 8 How can I achieve this in my Django template? -
Index of row looping over django queryset
I used to convert a django query set to a pandas DataFrame before looping over its rows, but it's not efficient as I loose many properties of a query set. sample_qs = MyModel.objects.all() sample_df = pd.DataFrame(sample_qs) for index, row in sample_df.iterrows(): print(f"Processing row {index} of {sample_df.shape[0]}...") Is there a similar way to iterate over sample_qs without converting it to a pandas DataFrame and still have something similar to index? I know about iterator, but couldn't find anything similar to index: for q in sample_qs.iterator(): print(f"Processing {str(q)}...") -
Add field to the object in the view
I have step form for creating Course object, and inside this object i have tutor field and i want to add something like that Course.tutor.add(request.user) but i can't do that because i haven't any instance to do that class FormWizardView(SessionWizardView): template_name = 'courses/create_course.html' file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT,'courses')) form_list = (CourseForm1,CourseForm2,CourseForm3,CourseForm4) def done(self,form_list,form_dict,**kwargs): instance = Course() for form in form_list: for field, value in form.cleaned_data.items(): setattr(instance, field, value) instance.save() return redirect('courses:my_courses',username=self.request.user.username)