Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Nginx not serving static files for Django website when using with gunicorn
I have made my first Django website and I want to deploy it on Digital ocean. I am using a $4 server option. I followed this tutorial step by step as it is. But, in the end, no CSS is being applied to the admin login page, and as they have mentioned in their tutorial, it means that static files are not being served by Nginx. I did not upload my project files as I first wanted to see if I can get the server running properly with the bare minimum. I have read almost all the answers that I can find on the internet, but just can't get Nginx to serve the static files. I am stuck on this problem for weeks now. Can someone help me, please? -
restrict django choice field on django admin per user
I have an exam like this: class Exam(BaseModel): ... STATE_CHOICES = ( (PASS, PASS), (FAILED, FAILED), (GREAT, GREAT), state = models.CharField(max_length=15, choices=STATE_CHOICES, default=PASS) ... Inside Django admin, I want the user with group X to be able to only change the state only from FAILED to PASS. and users with group Y be able to change the state from FAILED to PASS and PASS to GREAT. here is my admin.py: @admin.register(Exam) class ExamAdmin(NestedModelAdmin): list_display = ('state',) Does anyone know a solution for it? -
Why the payload is not valid. serializers.ModelSerializer | Where is problem ? | Django | views
I was writing the api for booking section. I am trying to make a management ptoject. The registration have feilds and i have to make rest api. When I am passing values from postman it is showing these error Models.py class BookingRegister(models.Model): STATUS = [('Booked','Booked'), ('InTransit','InTransit'), ('AtDestination','AtDestination'), ('Delivered','Delivered'), ('Return','Return')] PAYMENT_TYPE = [('Paid','Paid'), ('ToPay','ToPay'), ('ToBeBilled','ToBeBilled')] TRANSPORT_MODE = [('AIR','AIR'), ('ROAD','ROAD'), ('WATER','WATER')] PACKAGE_TYPE = [('TIN','TIN'), ('BOX','BOX'), ('BUNDLE','BUNDLE'), ('CARTOON','CARTOON')] TAX_PERCENTAGES = [(5,'5%'), (8,'8%'), (10,'10%'), (15,'15%'), (18,'18%')] RATE_AS_PER = [('QTY','QTY'), ('WT','WT')] id = models.AutoField(primary_key=True) #bookingDetails=models.OneToOneField(BookingRegisterDetails, on_delete=models.CASCADE) status = models.CharField(max_length=15, choices=STATUS) paymentType = models.CharField(max_length=10, choices=PAYMENT_TYPE) consignor = models.ForeignKey(Party, on_delete=models.CASCADE, related_name='consignor') consignee = models.ForeignKey(Party, on_delete=models.CASCADE, related_name='consignee') origin = models.ForeignKey(City, on_delete=models.CASCADE, related_name='origin') destination = models.ForeignKey(City, on_delete=models.CASCADE, related_name='destination') bookingPoint = models.ForeignKey(Branch, on_delete=models.CASCADE, related_name='bookingPoint') deliveryPoint = models.ForeignKey(Branch, on_delete=models.CASCADE, related_name='deliveryPoint') bookingDate = models.DateField() transportMode = models.CharField(choices=TRANSPORT_MODE, default='ROAD', max_length=15) createdTime = models.DateTimeField(editable=False, default=datetime.now) updatedTime = models.DateTimeField(editable=False, default=datetime.now) packageType = models.CharField(choices=PACKAGE_TYPE, default='CARTOON', max_length=15) itemName = models.CharField(max_length=30) quantity = models.IntegerField() actualWeight = models.FloatField(default=0) grossWeight = models.FloatField(default=actualWeight) taxPercentage = models.IntegerField(choices=TAX_PERCENTAGES) rateAsPer = models.CharField(choices=RATE_AS_PER, max_length=5) rate = models.FloatField() serviceCharge = models.FloatField(default=0) bookingCharge = models.FloatField(default=0) loadingCharge = models.FloatField(default=0) unloadingCharge = models.FloatField(default=0) total = models.FloatField(default=0) def __str__(self) -> str: return str(self.id)+" "+self.status+" "+self.paymentType+" "+self.consignor+" "+self.consignee <br> views.py class BookingRegisterAPI(APIView): def get(self, request, id=None, format=None): if id: try: booking=BookingRegister.objects.get(pk=id) … -
How to avoid repeating a queryset in Django views.py
what is the best way to avoid repeating a chunk of code that is being used in more than one class view? I'm repeating these 2 lines in couple of classes moderator = ServerModerator.objects.get(user=request.user) server = Server.objects.get(Q(creator=request.user) | Q(moderators=moderator), Q(tag=server_tag)) I've tried to create a function inside models.py like this: class Server(models.Model): ... creator = models.ForeignKey(User , on_delete=models.CASCADE, related_name='user_servers') moderators = models.ManyToManyField('ServerModerator', related_name='server') def moderator_checker(self, current_user): moderator = ServerModerator.objects.get(user=current_user) server = Server.objects.get(Q(creator=current_user) | Q(moderators=moderator),Q(tag=self.tag)) return server but this doesn't work views.py: class TagsAndFlairsView(LoginRequiredMixin, View): form_class = CreatePostTagForm form_class_2 = CreateUserTagForm def get(self, request, server_tag): ... # moderator = ServerModerator.objects.get(user=request.user) # server = Server.objects.get(Q(creator=request.user) | Q(moderators=moderator), Q(tag=server_tag)) check = Server.moderator_checker(request.user) server_post_tags = check.post_tags.all() server_user_tags = check.user_tags.all() return render(request, 'servers/tags-flairs.html', {"server":check, "server_post_tags":server_post_tags, "server_user_tags":server_user_tags, "create_post_tag_form":create_post_tag_form, "create_user_tag_form":create_user_tag_form}) -
How can I isolate a function within a view to make it run in the background in Django?
So I deployed my very first app to Digitalocean which is super exciting but also comes with some differences to a development environment. I do have a view that calls a function to update data requested from an API that takes some 2-3 minutes. Digitalocean however terminates the worker - for good reasons - after 30 seconds, so the process is aborted. [2022-08-21 08:40:10 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:25) How can I isolate run_post_publisher() in my view such as the view is finished and the "background" process can take the time it needs? This is the view and the mentioned function run_post_publisher() def execute_post_publisher(request): company = run_post_publisher() return HttpResponse(f'New post about {company} was published') I'm not sure if there is any Django built-in tools to make this happen? -
Boolean Field Django Can't Migrate to Postgresql
Django Version 4.1 I have created migration in SQLite3 and want to change to Postgresql when i connect to Postgresql i've this error django.db.utils.ProgrammingError: cannot cast type smallint to boolean LINE 1: ...R COLUMN "isProduct" TYPE boolean USING "isProduct"::boolean this is my model from django.db import models class Item(models.Model): name = models.CharField(max_length = 150) slug = models.SlugField(unique = True, db_index=True, null=True) pic = models.URLField(max_length = 400) address = models.CharField(max_length = 150) phone = models.CharField(max_length = 15) price = models.IntegerField() original_link = models.URLField(max_length = 400) description = models.TextField(max_length = 1500) additional_desc = models.TextField(max_length = 1500,default='') material = models.TextField(max_length = 200, default = '') weight = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0) weight_unit = models.CharField(max_length = 4, default = '') color = models.CharField(max_length = 50, default = '') dimension_length = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0) dimension_width = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0) dimension_height = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0) dimension_unit = models.CharField(max_length = 4, default='') isProduct = models.BooleanField(default = True) furniture_location = models.CharField(max_length = 100, default='') def __str__(self): return self.name i've tried to change BooleanField to SmallIntegerField, PositiveSmallIntegerField, and IntegerField and the error still says the same … -
How to get different querysets in Django templates from Django views
In my blog app I want to allow unkown users to see articles, but I also want to allow logged users to see in the same page (somewhere else) their own articles; something like: YOUR ARTICLES: list (only if user is logged) ALL ARTICLES: list Note that I need to show articles based on the user logged in because the url must be this: path('<int:user_id>/', views.IndexView.as_view(), name='index'), index.html: {% if user.is_authenticated %} Your articles: <div class="container py-5"> {% if article_list %} {% for article in article_list %} <div class="container"> <div class="row"> <div class="col"> {{article.author}} </div> <div class="col"> {{article.title}} </div> <div class="col"> {{article.pub_date}} </div> <a href=" {% url 'blog_app:detail' user_id = user.id %} "> <div class="col"> Open article </div> </a> </div> </div> {% endfor %} {% else %} <b>No articles!</b> {% endif %} </div> {% endif %} views.py: class IndexView(ListView): model = Article template_name = 'blog_app/index.html' context_object_name = 'article_list' #return articles of a particular author def get_queryset(self): self.article = get_object_or_404(Article, author_id=self.kwargs['user_id']) return Article.objects.filter( author = self.article.author ) My question is: How can I get from IndexView two different querysets? One with all articles and one with articles filtered by author? Bonus question: Can I allow unkown users to reach the articles … -
Django ORM - Filter by Multiple Columns Ranges
I have a requirement to fetch the data (both i_week and i_year) for the last one year from current date. The table has the following columns. Let us call the table as temp. i_week - The week number [1,52] i_year - The year Other columns I know how to fetch the data using SQL (Postgres). This is the query: SELCT "i_week", "i_year" FROM "temp" WHERE ("i_week", "i_year") BETWEEN (1, 2021) AND (52, 2022); What I have tried so far is this: temp.objects.filter(i_week__range=(previous_week, current_week), i_year__range=(previous_year, current_year)) But this is not giving me the desired result. How can I achieve the above SQL query using Django ORM ? How can I filter the ranges of i_week and i_year at once in ORM ? -
I have to add a column permissions which is determined by columns roles and access. I'm trying to nest the if loops but there is error
The code i'm using is like this CREATE TABLE EMPLOYEE ( empId INTEGER PRIMARY KEY, username TEXT NOT NULL, userrole TEXT NOT NULL, roles TEXT NOT NULL, accesses TEXT NOT NULL ); INSERT INTO EMPLOYEE VALUES (0001, 'Clark','President', 'Admin','privileged'); INSERT INTO EMPLOYEE VALUES (0002, 'Dave','sales rep', 'Operational role','not privileged'); INSERT INTO EMPLOYEE VALUES (0003, 'Ava','finance manager', 'Managerial role','privileged'); SELECT * FROM EMPLOYEE; ALTER TABLE EMPLOYEE ADD COLUMN permissions VARCHAR; DO $do$ BEGIN IF EMPLOYEE.roles='Admin' THEN IF EMPLOYEE.accesses='privileged' THEN SET permissions = 'GRANTED'; else IF EMPLOYEE.roles='Operational role' THEN IF EMPLOYEE.accesses='not privileged' THEN SET permissions = 'GRANTED'; else IF EMPLOYEE.roles='Managerial role' THEN IF EMPLOYEE.accesses='not privileged' THEN SET permissions = 'GRANTED'; else SET permissions = 'REVOKED'; END IF; END $do$; SELECT * FROM EMPLOYEE; -
how to put the item id on console.log using add to cart button using javascript?
this is my html button for add to cart and below that is the javascript i am using to display the itemdetails id into the browser console of google chrome. {% for detail in tonerdetails %} <tr> <td>{{detail.toner_model.toner_model}}</td> <td>{{detail.issued_to.name}}</td> <td>{{detail.employee_name}}</td> <td>{{detail.employee_designation}}</td> <td>{{detail.status}}</td> <td><a href="{% url 'print_toner_issue_vouchers' detail.id %}" target="_blank" rel="noopener noreferrer" class="btn btn-info">Print Issue Voucher</a> <a href="{% url 'print_toner_sent_invoice' detail.id %}" target="_blank" rel="noopener noreferrer" class="btn btn-info">Print Invoice</a> <a data-detail="{{detail.id}}" data-action="add" class="btn btn-outline-secondary addtocart">Add to Cart</a> <a href="{% url 'edit_tonerdetails_form' detail.id %}" class="btn btn-warning">Edit</a> <a data-toggle="modal" data-target="#delete-modal{{ toner.pk }}" class="btn btn-danger">Delete</a></td> </tr> let butns=document.getElementsByClassName('addtocart') for (let i =0;i<butns.length;i++){ butns.addEventListener('click', function(){ let detailid=this.dataset.detail let action=this.dataser.action console.log(detailid) }) } -
Django all auth microsoft graph profile picture
I use django-allauth about user registration/login using user's Microsoft Graph profile. Now, I can take some standard information from Microsoft (default for all auth). Is possible to retrieve also list of profile-pictures? How can make it in allAuth? -
django orm , django models and F
I have models Class Invoice(): Class Entry(): Class InternalEntry(): invoice = models.ForeignKey(InternalInvoice) entry = models.ForeignKey(Entry) I need queryset to find entries which are not recorded as internal entry -
Django render page with context does not work
I like to re-render my page, after a document was uploaded using Djanog. I like to change context['FileName'] = 'Test' to context['FileName'] = 'Test2' in the HTML page. But it does not work and I am at a loss as to what I am doing wrong here. views.py def UploadView (request): context = {} #Generate Language Selection **context['FileName'] = 'Test'** if request.method == "POST": if not(request.FILES=={}): date_time = datetime.datetime.now() date_time = date_time.strftime('%Y%m%d_%H_%M') #uploaded_file = request.FILES["uploaded_file"] uploaded_file = request.FILES.get('file') document = Document( file_title = request.user.user_unique_key, uploaded_file = uploaded_file, date_time = date_time, ) document.save() file_path = document.uploaded_file.file.name file_name = uploaded_file.name **context['FileName']='Test2';** return render(request,"UPLOAD.html",context) return render(request, "UPLOAD.html", context) HTML <h6><font color="red">{{FileName}}</font></h6> -
Not able to construct innnerhtml in django html templates using ( for loop ) from file static/javascript/main.js
This HTML template I had code in Django templates and linked javascript from static files I am not able to use (for loop) of javascript to insert innerhtml in django html templates to add table i had written. {% load static %} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Split Webapp</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> </head> <body> <div class="mb-3 row"> <label for="pass1" class="col-sm-2 col-form-label">SPLIT IN:</label> <div class="col-sm-2"> <input id="payees" type="number" min=0 max=100> <button type="button" class="btn btn-info" onclick="myfunction()" id="payeesbtn">ADD</button> <div class="container my-3" id="addpayees"> </div> </div> </div> <script src="{% static 'javascript/main.js' %}" type="text/javascript"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"> </script> </body> </html> **This is javascript in static folder ** console.log("javascript is working"); function myfunction() { let add_payee = document.getElementById("payees").value; let add_payee_column = document.getElementById("addpayees"); for (let i = 0; i < add_payee; i++) { console.log("working"); add_payee_column.innerHTML += ` <div class="container my-3"> <h5>payee ${add_payee} </h5> <table> <tr> <th>Name:</th> <td><input type="text"></td> </tr> <tr> <th>Mobile:</th> <td><input type="text"></td> </tr> </table> </div>`; }; }; -
foreign key error While submitting the forms
I had created a model and it contain foreign key fields also , but while I try to submit it shows error by saying like number cannot assign to the field where foriegn key is assigned. How can I upload as name . Error picture like below picture model.py class UserReg(models.Model): username=models.ForeignKey(settings.AUTH_USER_MODEL,default=1,null=True,on_delete=models.CASCADE) Name=models.CharField(max_length=200) Date_of_Birth=models.DateField() Age=models.IntegerField() Gender=models.CharField(max_length=200, choices=GenderChoice) Phone_no=models.IntegerField() Mail=models.EmailField(unique=True) Address=models.TextField(max_length=700) District=models.ForeignKey(District,on_delete=models.CASCADE) Branch=models.ForeignKey(Branch,on_delete=models.CASCADE) Account_Type=models.CharField(max_length=200,choices=AccType) Materials=models.ManyToManyField(Materials) class District(models.Model): name=models.CharField(max_length=200) Views.py def reg(request): form = Userform(request.POST or None) if request.method == 'POST': username=request.POST.get('username') Name=request.POST.get('Name') Date_of_Birth = request.POST.get('Date_of_Birth') Age = request.POST.get('Age') Gender = request.POST.get('Gender') Phone_no = request.POST.get('Phone_no') Mail = request.POST.get('Mail') Address = request.POST.get('Address') District = request.POST.get('District') Branch = request.POST.get('Branch') Account_Type = request.POST.get('Account_Type') Materials = request.POST.get('Materials') obj=UserReg(username=username,Name=Name,Date_of_Birth=Date_of_Birth,Age=Age,Gender=Gender, Phone_no=Phone_no,Mail=Mail,Address=Address,District=District,Branch=Branch,Account_Type=Account_Type,Materials=Materials) obj.save() return redirect('/') return render(request,'registration.html',{'form':form}) -
Python Websockets handles one time use only
I want to make a python code that browsers can connect to get a video stream. Problem is that my python code handles only one time use, meaning if you open the browser it will connect to that websocket correctly, but if you refresh the page, or another client want to access a stream from in parallel it won't happen saying the port is being used (this error is server side) My code: import asyncio import websockets import cv2 import os import signal async def time1(websocket, path): while True: vid = cv2.VideoCapture('V_DRONE_097.mp4') vid.set(cv2.CAP_PROP_FPS,24) try: #v = VideoStreamWidget() #v.ops() while(vid.isOpened()): img, frame = vid.read() #frame = cv2.resize(frame, (640, 480)) encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 65] man = cv2.imencode('.jpg', frame, encode_param)[1] #sender(man) #print(len(man.tobytes())) #cv2.imshow('img',man) await websocket.send(man.tobytes()) except : pass async def main(): loop = asyncio.get_running_loop() stop = loop.create_future() #loop.add_signal_handler(signal.SIGTERM, stop.set_result, None) port = int(os.environ.get("PORT", "8585")) global stop1 async with websockets.serve(time1, "", port): await stop stop1 = False ''' async def main(): async with websockets.serve(time1, "localhost", 8585): await asyncio.Future() # run forever asyncio.run(main()) ''' if __name__ == "__main__": while True: asyncio.run(main()) I want the server to keep working even if the client (browser) refreshes the page or close it and comeback later. This is the … -
Django create user Direct assignment to the forward side of a many-to-many set is prohibited. Use groups.set() instead
I am using the Django default User model to do user registration. When I was trying to create a user I got this error message. Direct assignment to the forward side of a many-to-many set is prohibited. Use groups.set() instead. # views.py from django.contrib.auth.models import User from rest_framework import viewsets from app.serializers import UserSerializer # Create your views here. class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer # serializers.py from django.contrib.auth.models import User from rest_framework import serializers class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__' extra_kwargs = {'password': {'write_only': True, 'required': False}} def create(self, validated_data): print(validated_data) user = User.objects.create_user(**validated_data) return user # urls.py from django.urls import path, include from rest_framework import routers from app import views from rest_framework.authtoken.views import obtain_auth_token router = routers.SimpleRouter() router.register(r'users', views.UserViewSet) urlpatterns = [ path('auth/', obtain_auth_token), ] urlpatterns += router.urls I only insert the user record, there is no foreign table or many-to-many relationship. Not sure why the system throws this error. Attached with the postman screenshot. -
Cross-database relationships in Django with MySQL
Is there a primer on how to develop systems that segregate auth information from other information across multiple databases using Django without foregoing FK to User in another db? Django doesn’t currently provide any support for foreign key or many-to-many relationships spanning multiple databases. If you have used a router to partition models to different databases, any foreign key and many-to-many relationships defined by those models must be internal to a single database. Django - Cross-database relations -
Merging Django-CMS Edit and Publish Mode created two different Database entries with the same values
My CTO asked me to fix an "issue." Apparently, whenever I add any plugin in the locally run DRF-based Django CMS project, it creates two database entries. One for edit mode, and the other when I hit publish. My CTO asked to find if there were any way to dynamically merge the edit mode entry with the merge mode and vice versa when switching between those modes. Our website is very heavy. But is doing this even necessary for Django-CMS? Here is the model.py code for an example plugin. Models.py: class TechnologyVideo(ck_CMSPlugin): Video_thumb = models.ImageField(upload_to="technology_video", null=True, blank=True) video_url = models.URLField(help_text='Please enter your video url', validators=[URLValidator], null=True) # video_title = models.CharField(max_length=100, blank=True, null=True, ) # video_description = HTMLField(null=True, blank=True, configuration="VIDEO_POST_TEXT_CKEDITOR") class Meta: verbose_name = "Technology Video Model" def __unicode__(self): return f'{self.Video_thumb}' cms_plugins.py: class TechnologyVideoPlugin(CMSPluginBase): model = TechnologyVideo name = 'Technology Video Plugin' render_template = 'technology_video.html' def render(self, context, instance, placeholder): context.update({ 'Video_thumb': instance.Video_thumb, 'video_url': instance.video_url, }) context = super(TechnologyVideoPlugin, self).render(context, instance, placeholder) return context plugin_pool.register_plugin(TechnologyVideoPlugin) -
How to solve the problem of widgets.py on Heroku?
I just tried to push my django project to heroku but failed. When I tried to run "git push heroku master", it's rejected. And then I followed the instruction that asked me to set the variable "DISABLE_COLLECTSTATIC" to 1. After that I tried to push again and succeed. But when I run "heroku run python manage.py migrate", I got this: File "manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line utility.execute() File "/app/.heroku/python/lib/python3.8/site-packages/django/core/management/__init__.py", line 337, in execute django.setup() File "/app/.heroku/python/lib/python3.8/site-packages/django/__init__.py", line 27, in setup apps.populate(settings.INSTALLED_APPS) File "/app/.heroku/python/lib/python3.8/site-packages/django/apps/registry.py", line 85, in populate app_config = AppConfig.create(entry) File "/app/.heroku/python/lib/python3.8/site-packages/django/apps/config.py", line 94, in create module = import_module(entry) File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 843, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/admin/__init__.py", line 4, in <module> from django.contrib.admin.filters import ( File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/admin/filters.py", line 10, in <module> from django.contrib.admin.options import IncorrectLookupParameters File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/admin/options.py", line 12, in <module> from django.contrib.admin import helpers, widgets File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/admin/widgets.py", line 151 '%s=%s' % (k, v) for k, v … -
Calling Channels AsyncWebCoscketConsumer function from Signals Receiver doesn't work
Firstly, here's the code. I have checked it now I don't know how many times for any errors, and debugged step by step to find out why the function isn't called. # signals.py @receiver(post_save, sender=Ticket) def new_ticket(sender, instance, created, **kwargs): print("in receiver") if created: print("in created") channel_layer = get_channel_layer() print(channel_layer) async_to_sync(channel_layer.group_send( 'tickets_updates_group', { 'type': 'new_ticket', 'subject': "from receiver" })) print("after async_to_sync") All the print statements are always being called. # consumers.py class Tickets(AsyncWebsocketConsumer): async def connect(self): await self.channel_layer.group_add('tickets_updates_group', self.channel_name) await self.accept() async def disconnect(self, close_code): await self.channel_layer.group_discard('tickets_updates_group', self.channel_name) await self.close() async def new_ticket(self, event): print('in consumer.new_ticket') subject = event['subject'] print("subject: " + subject) await self.send(text_data=json.dumps({ 'subject': subject })) print("after send") Here, the new_ticket function is never being called, none of the print statements are being executed and my webpage isn't updated (as opposed to putting the group_send code in the connect funciton of the consumer class. I know that the problem isn't syntax, because if I add receiver's code to the consumers connect function, the new_ticket function is always being called without a problem (after replacing async_to_sync with await. I have seen all the possible working examples out there and I cannot seem to figure out why for the life … -
Product matching query does not exist
need help with following Error: DoesNotExist at /sales_data/sales_data_import Product matching query does not exist. I have two models below, SalesData gets product name from Product. And I am trying to import csv with sales data to SalesData module through function, but it does not work. And I am sure that all the products names in imported csv are included in model Product, so do not understand whey there is DoesNotExists Error. Models.py: class Product(models.Model): name = models.CharField("Product", max_length=150) def __str__(self): return f"{self.name}" class SalesData(models.Model): date = models.DateField("Date", null=True, blank=True) product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True) sales = models.DecimalField("Sales", max_digits=10, decimal_places=2, null=True, blank=True) quantity = models.IntegerField("Quantity", null=True, blank=True) @classmethod def create_from_csv_line(cls, line): sd = SalesData() entry1 = line["Date"] entry2 = datetime.strptime(entry1,'%d.%m.%Y %H:%M') date = entry2.strftime('%Y-%m-%d') sd.date = date status = str(line["State"]) sd.status = status curr = str(line["Currency"]) sd.product = Product.objects.get(name=str(line["Items"])) sd.quantity = int(line["Item quantity"]) sales = float(line["Subtotal"]) if curr == "CZK": sd.sales = sales * 100/(100+VAT) else: sd.sales = c.convert(curr, "CZK", sales, entry2) * 100/(100+VAT) if status == "fulfilled": sd.save() Views.py: class SalesDataImportView(LoginRequiredMixin, SuccessMessageMixin, FormView): template_name = "sales_data/sales_data_import.html" form_class = SalesDataForm def test_func(self): return self.request.user.is_superuser def post(self, request, *args, **kwargs): form: SalesDataForm = SalesDataForm(request.POST, request.FILES) if form.is_valid(): csv_file = form.cleaned_data["uploaded_file"] decoded_file … -
Model property data with many-to-many relationship type is not displayed. Where is the mistake?
When using this code, it gives the following error: genres = GamesGenres.objects.annotate(Count('games')) Cannot resolve keyword 'games' into field. Choices are: games_genres, id, name, slug If you use the options above, then the "genre" property of the "Games" model is not displayed in the browser in the sidebar area, as intended. I want the sitebar to display a list of game genres by which you can filter and select the genre of interest. models.py class Games(models.Model): name = models.CharField(max_length=255) slug = models.CharField(max_length=255, unique=True, db_index=True) content = models.TextField() photo = models.ImageField(upload_to="games/%Y/%m/%d/") release_date = models.DateField() developer = models.CharField(max_length=255) publisher = models.CharField(max_length=255) trailer = models.URLField() genre = models.ManyToManyField("GamesGenres", related_name="games_genres") def __str__(self): return self.name def get_absolute_url(self): return reverse("show_games", kwargs={"games_slug": self.slug}) class GamesGenres(models.Model): name = models.CharField(max_length=80) slug = models.CharField(max_length=255, unique=True, db_index=True) def __str__(self): return self.name def get_absolute_url(self): return reverse("genres", kwargs={"genre_slug": self.slug}) views.py class GamesList(GamesMixin, ListView): model = Games template_name = "main_app/games.html" context_object_name = "games" def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(**kwargs) c_def = self.get_user_context(title="Games") return dict(list(context.items()) + list(c_def.items())) class ShowGamesGenres(GamesMixin, ListView): model = GamesGenres template_name = "main_app/games.html" context_object_name = "games" allow_empty = False def get_queryset(self): return Games.objects.filter(genre__slug=self.kwargs["genre_slug"]).select_related('genre') def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(**kwargs) c_def = self.get_user_context(title=str(context["games"][0].genre), genre_selected=context["games"][0].genre_id) return dict(list(context.items()) + list(c_def.items())) utils.py class … -
Django alias for static file path
I have a Django 4.1 project and want to make an alias to the directory with static files. So, in settings.py I have STATIC_URL = "static/" All my static files are in the example.com/static/.... I want to make a shortcut to one of directories of static files. For example example.com/magic/... should be the same as example.com/static/physics/.... That shoudn't be a redirect, because if it is a redirect, I won't be able to download file using curl without any special options. How can I do this? Maybe with some special paths in urls.py? -
POST Method missing in 'Allowed' Django rest framework
This is what is showing when I go the rest framework page in my web browser Allow: GET, HEAD, OPTIONS My model.py is as follows: class Note(models.Model): title = models.CharField(max_length=120) description = models.CharField(max_length=600) def __str__(self): return self.title These are my serializers.py : class NoteSerializer(serializers.ModelSerializer): class Meta: model = Note fields = '__all__' Lastly these are my views class NotesViewset(viewsets.ModelViewSet): serializer_class = NoteSerializer queryset = Note.objects.all()