Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
shoping cart in django rest freamwork
I save the shopping cart in the Redis database. The codes I wrote in such a way that the user must be logged in to add the product to the shopping cart. I want to do something without getting the user ID and without the user having logged in to create the shopping cart for the users. What should I do to create a shopping cart instead of the user ID in the code I wrote? import redis r = redis.Redis(host='localhost', port=6379, db=0) class Cart: @classmethod def add_cart(cls, **kwargs): user_id = kwargs.get('user_id') product_id = kwargs.get('product_id') cart_name = f'{user_id}_{product_id}' if r.exists(cart_name): r.hincrby(cart_name, 'quantity', kwargs['quantity']) else: for field, value in kwargs.items(): r.hset(cart_name, field, value) return cart_name @classmethod def get_cart(cls, user_id): cart = [] for user_carts in r.scan_iter(f'{user_id}_*'): data = {key.decode('utf-8'): value.decode('utf-8') for key, value in r.hgetall(user_carts).items()} cart.append(data) return cart -
The problem of not displaying validation messages in allauth after overriding allauth templates
I use the allauth package to validate forms. The problem I have in this case is that I want to change the default templates of the allauth package and add my own styles and css classes to them. And I have done this, but my problem is that when the user enters incomplete or incorrect login information, no validation message is displayed to the user. I want to change the default allauth templates, such as login.html, signup.html, etc. and also I want to display my own authentication messages. Please guide step by step I because am learning Django, Thanks. This is login.html {% extends "base.html" %} {% load i18n %} {% load account socialaccount %} {% block head_title %}{% trans "Sign In" %}{% endblock %} {% block content %} <h1 class="head-line">{% trans "Sign In" %}</h1> {% get_providers as socialaccount_providers %} {% if socialaccount_providers %} <div class="container"> <p class="text-center">{% blocktrans with site.name as site_name %}Please sign in with one of your existing third party accounts. Or, <a href="{{ signup_url }}">sign up</a> for a {{ site_name }} account and sign in below:{% endblocktrans %} </p> </div> <div class="socialaccount_ballot container"> <ul class="socialaccount_providers text-center border"> {% include "socialaccount/snippets/provider_list.html" with process="login" %} </ul> <div class="login-or … -
Django form still shows errors even after successful submission if I press back button
I made a Django form. If the user tries to submit the form when entering wrong data then error is showed in the form and it is not submitted but when the user enters correct data and submit the form it gets submitted. The problem is that when the user presses the back button, he can still see that error in the form. What can I do about it? -
ImportError: attempted relative import beyond top-level package?
MY Structure here: https://i.stack.imgur.com/HcQxb.png https://i.stack.imgur.com/rP3j5.png When I import model from accounts app to to_do app: #in to_do/models.py from ..accounts.models import Account I have this error: File "/home/ghost/projects/django_projects/To_Do_App/to_do_list/to_do/models.py", line 2, in <module> from ..accounts.models import Account ImportError: attempted relative import beyond top-level package How to fix it? -
Django Date calculation
Model: class JobCycle(models.Model): dateReceived = models.DateField(blank=True, null=True) dueDate = models.DateField(blank=True, null=True) dateOut = models.DateField(blank=True, null=True) fee = models.IntegerField(blank=True, null=True) def __str__(self): return "Job Cycle" + str(self.id) I want to make a calculation, the due date will never exceed the received date. i Want to do this in the model -
Django Admin Panel Filtering - Apply Changes on Specific Items
I have used django-admin-sortable2 for sorting items. Items model have a field of category. I wanted to sort items that have the same category. class Ordering(models.Model): item = models.OneToOneField( "Item", on_delete=models.CASCADE ) main_order = models.PositiveIntegerField( default=0, blank=False, null=False, ) class Meta: ordering = ("main_order", ) def __str__(self): return self.item.title def reorder(self): ordered_list = [] for order, item in enumerate(Ordering.objects.all(), 1): item.main_order = order ordered_list.append(item) MainPageCoupons.objects.bulk_update( objs=ordered_list, fields=["main_order", "coupon"] ) def save(self, *args, **kwargs): super().save(*args, **kwargs) self.reorder() Is it possible in Django Admin Panel to change a field values for items that have the same value for specific field like category? -
Keep the aspect ratio by sorl-thumbnail in Django
i'm using sorl thumbnail library and i have a problme i cannot Keep the aspect ratio of my images . {% thumbnail product.image "268x250" quality=85 crop='center' as im %} <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> {% endthumbnail %} This is my code but it makes my pictures very Unclear cause it crops the picture very badly is there any solution, not crop the pictures and only make them smaller with keeping aspect ratio ??? i want keeping aspect ratio of my pictures -
Obtain DJango Authorization token using https only
I am not a web developer and hence my understanding of web development technology is limited. Hence please bear with me. I am trying to retrieve result from a Rest API using VBA. The rest API requires authentication using django framework. I initially tried to use HTTPRequest.Send "Get", URL, async, username, password I am getting {"detail":"Authentication credentials were not provided."} back. I gather that as the REST API I am working with uses django framework, I probably would need to authenticate using django. Hence my question is if I could submit username/password to django and retrieve authorisation token, by making https requests only - without having to reference various django objects (which would have entailed developing it outside VBA). Am I asking for the impossible? Thanks in advance -
What is the best way to separate two applications on a same Django Project?
I have two separate applications with different features but with the same back-end code base that runs on Django. These applications also have separate databases. But some Django apps (like custom user or an app for managing locations or custom authentication) are used in both projects; and developing, maintaining, and adding new features are getting harder beacause the project is growing large What is the best way to separate code bases for these projects? Should I migrate to microservices with Django (or something else)? Or is there a better way to -
How to compare in same model (Django) two specific fields
How to compare in same model (Django) two specific fields (which one is higher) and save result in third field(Boolean for example)? -
Weasyprint render_to_string <weasyprint.HTML object at 0x7f6f944df190> 2 extra bytes in post.stringData array problem
I have an html template and I want to print a pdf with weayprint for it. However, I am getting the error "<weasyprint.HTML object at 0x7f6f944df190> 2 extra bytes in post.stringData array problem" that I mentioned in the title. I am sharing my views.py file and some of my html template. views.py def export_pdf(id): print('export') edit_ambulanceCase = CallCenter.objects.all() html_string = render_to_string('forms/update_forms/pdf.html',{'PreCaseControl':edit_ambulanceCase}) print(html_string) html = HTML(string=html_string) print(html) return HttpResponse(html.write_pdf('deneme.pdf')) pdf.html <main> <div class="container-fluid px-4"> <div class="row justify-content-center"> <div class="col-lg-12"> <div class="card shadow-lg border-0 rounded-lg mt-5"> <div class="card-header"><h4 class="text-center font-weight-light my-4">Çağrı Merkezi Formu</h4></div> <div class="card-body"> <form action="" method="POST"> {% csrf_token%} <h3>Çağrıyı Yapan</h3> <div class="row"> <div class="mb-3 col"> <label for="institution_name" class="form-label">KURUM ADI</label> <input type="text" class="form-control" id="institution_name" name="institution_name" value="{{CallCenter.institution_name}}"> </div> <div class="mb-3 col"> <label for="caller_username" class="form-label">ADI SOYADI</label> <input type="text" class="form-control" id="caller_username" name="caller_username" value="{{CallCenter.caller_username}}"> </div> </div> <div class="row"> <div class="mb-3 col"> <label for="proximity" class="form-label">YAKINLIĞI</label> <input type="text" class="form-control" id="proximity" name="proximity" value="{{CallCenter.proximity}}"> </div> <div class="mb-3 col" data-type="control-phone"> <label for="caller_tel_no" class="form-label">TELEFON NUMARASI</label> <input type="tel" class="form-control" id="caller_tel_no" name="caller_tel_no" value="{{CallCenter.caller_tel_no}}" data-component="phone" inputmode="text" maskvalue="(###) ###-####" val> <label class="form-sub-label" style="min-height: 13px;" for="caller_tel_no_sub">Lütfen geçerli bir telefon numarası girin.</label> </div> </div> <h3>Hasta</h3> <div class="row"> <div class="mb-3 col"> <label for="patient_username" class="form-label">ADI SOYADI</label> <input type="text" class="form-control" id="patient_username" name="patient_username" value="{{CallCenter.patient_username}}"> <label for="patient_age" class="form-label">YAŞ</label> <input type="text" class="form-control" id="patient_age" … -
how can I display category name of selected wallpaper
models.py class Category(models.Model): category_name = models.CharField(max_length=100) def __str__(self): return self.category_name class SubCategory(models.Model): sub = models.CharField(max_length=100) category = models.ForeignKey(Category,on_delete=models.CASCADE) def __str__(self): return self.sub class Wallpaper(models.Model): subcategory = models.ManyToManyField(SubCategory) this is my view.py def download(request, wallpaper_name): try: wallpaper = Wallpaper.objects.get(name=wallpaper_name) context = {'wallpaper': wallpaper} return render(request, 'Wallpaper/download.html', context) on my download page how can I show categorty name of that specific wallpaper -
What is wrong with this PostgreSQL connection?
Everything was working fine, until suddenly my docker-compose up & manage.py migrate & manage.py makemigrations all started failing. an example is below. C:\Users\tgmjack\Desktop\londonappdevelopersexample\my_ec2_ting\app>python manage.py makemigrations C:\Users\tgmjack\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\commands\makemigrations.py:143: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': connection to server at "localhost" (::1), port 5432 failed: Connection refused (0x0000274D/10061) Is the server running on that host and accepting TCP/IP connections? connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused (0x0000274D/10061) Is the server running on that host and accepting TCP/IP connections? warnings.warn( No changes detected Since the error complained of inconsistent migration history, i deleted my migrations folder thinking i could just start again. That changed nothing, so then i decided to delete all my previous containers and images in docker too. The postgresql server is now running again after doing another docker build. but it still doesnt want to connect. below is the last bunch of lines from the logs of my postgresql server copied from inside docker desktop. I believe this shows that im doing things right (ie my server is running on 0.0.0.0:5432) 022-10-29 08:53:48.707 UTC [1] LOG: received fast shutdown request 2022-10-29 08:53:48.709 UTC [1] LOG: aborting any active transactions 2022-10-29 … -
migrate sqlite database data to postgres database on heroku
I've been working on a django project locally and used SQLITE as the database. I've now deployed the project to Heroku and used postgresql as the database. I've done the migrations and the database schemas migrated fine but the data from the tables has not migrated. How do i migrate the sqlite data to postgresql database? Here is my database code from settings.py DATABASES = { 'default': { "ENGINE": "django.db.backends.sqlite3", "NAME": os.path.join(BASE_DIR, "db.sqlite3"), } } import dj_database_url db_from_env = dj_database_url.config(conn_max_age=600) DATABASES['default'].update(db_from_env) -
How to get a target table without a table via a thought relation
I have models ` class G(models.Model): s = models.ManyToManyField("S", related_name="gg") class S(models.Model): b = models.BooleanField(blank=True, null=True) class SP(models.Model): s = models.ForeignKey("S", models.DO_NOTHING, related_name="sp1") p = models.ForeignKey("P", models.DO_NOTHING, related_name="sp1") class P(models.Model): q = models.IntegerField() ` How can I get prefetch related table E? I try to do A.objects.prefetch_related("s__sp1__q").all(), but I get the data of the intermediate table SP (s_id=1, p_id=1), but I want to get the data of table P immediately (q=2) -
django querySet union?
there is situation in which when user search a keyword, the result will be 3 queries a=model.objects.filter(icontains=keyword[0]) b= a.filter(icontains=keyword) c= a.filter(istartswith=keyword) And I want to return a result which combines a, b & c. But the condition is the order should be c,b,a and elements should not be repeated. I tried using union but the order is not correct. -
Foreign Key TestCase
I am trying to run tests on models and am having trouble with ones that have a foreign key. When I try to get the card made in setUp I am not able to. I am not understanding why. The value expected for the attribute category is an int. Either category, category.id, nor 'Test Category' work. Code: models.py class Category(models.Model): category_name = models.CharField(max_length=32) class Card(models.Model): category = models.ForeignKey(Category, on_delete=models.CASCADE) question = models.CharField(max_length=255) answer = models.TextField() slug = models.SlugField() test_models.py class CardTestCase(TestCase): def setUp(self) -> None: category = Category.objects.create(category_name='Test Category') Card.objects.create(category=category, question='Hello?', answer='Hello!', slug='slug' ) def test_card_exists(self): category = Category.objects.get(category_name='Test Category') L29 card = Card.objects.get(category=category.id, question='Hello?', answer='Hello!', slug='slug' ) Error: line 29, in test_card_exists card = Card.objects.get(category=category.id, django_cards.cards.models.Card.DoesNotExist: Card matching query does not exist. -
Calculate remaining days using javascript
I have this code I try to calculate remaining days using javascript in html I want to loop the function through all start date innerHTML First I get the start date in Html and calculate them all and display them any help would be greatly appreciated <td> <div id="start_date"> {{start_date|date:"m d Y"}} <!-- Here will by the start date 10/28/2022 --> </div> </td> In script <script> function func (){ var starDate = document.getElementById('start_date').innerHTML; console.log(starDate) var date = Math.abs((new Date().getTime() / 1000).toFixed(0)); var date2 = Math.abs((new Date().getTime(starDate) / 1000).toFixed(0)); var diff = date2 - date; document.getElementById('remaining-days').innerHTML = diff; console.log(diff) } func(); in display I got 0 just for first one -
AttributeError: 'WindowsPath' object has no attribute 'rpartition' when setting directory
After typing STATIC_ROOT = BASE_DIR / "staticfiles" in settings.py I get the error in the tittle. I tried with STATICDIR but it still doesn't work. I am pretty new to django so I don't really know other ways to fix it. -
Send message using Django Channels outside consumer class getting RuntimeError('Event loop is closed')
I am trying to send a message to the frontend outside of a consumer class in Django Channels. What I am trying to do is, the client will send a file via http, thus hitting a view class, and the view class will call the consumer class and send update to the client via websocket. This is my view class GroupListView(BaseListView): name = "Group list view" model = Group serializer = GroupSerializer def get(self, request: Request): if "bulk" in request.query_params and request.query_params["bulk"]: async_to_sync(get_channel_layer().group_send)("test_lobby", {"type": "chat.message"}) return self.send_response(False, "pending", {}) This is my consumer class TestConsumer(WebsocketConsumer): def connect(self): self.room_name = "lobby" self.room_group_name = "test_lobby" async_to_sync(self.channel_layer.group_add( self.room_group_name, self.channel_name )) self.accept() def disconnect(self, code): async_to_sync(self.channel_layer.group_discard)( self.room_group_name, self.channel_name ) def chat_message(self, event): # Send message to WebSocket self.channel_layer.send(text_data=json.dumps({"message": 'hello world'})) I am following from the Django Channels documentation: https://channels.readthedocs.io/en/stable/topics/channel_layers.html#using-outside-of-consumers However, I am getting this error HTTP GET /api/v2/groups/?bulk=true 200 [0.05, 127.0.0.1:56152] Task exception was never retrieved future: <Task finished name='Task-28' coro=<Connection.disconnect() done, defined at /python3.9/site-packages/redis/asyncio/connection.py:819> exception=RuntimeError('Event loop is closed')> Traceback (most recent call last): File "/python3.9/site-packages/redis/asyncio/connection.py", line 828, in disconnect self._writer.close() # type: ignore[union-attr] File "/python3.9/asyncio/streams.py", line 353, in close return self._transport.close() File "/python3.9/asyncio/selector_events.py", line 700, in close self._loop.call_soon(self._call_connection_lost, None) File "/python3.9/asyncio/base_events.py", line 746, … -
Django admin. How to redirect the link on the model class to open the first object?
I have model in django it is 'Slogan' model. I restricted it to only 1 object from admin: def has_add_permission(self, request): if len(Slogan.objects.all()) == 1: return False return True My view in home page will create the first object on page load if there is no object slogan in the database. What I want to do is when I open admin and click on the left side where Slogan is to open the first object of that class directly instead of seeing a list with objects on the right and select it from there. I tried get_url() method from admin but this seems to be for the specific objects. -
My list gets suddenly empty and I can't restore it
I'm newbie in django and I was trying to construct a site in which the user can take a quiz. In a simpler version of that, I wanted just the questions to be displayed in random order, one after another(when the user presses a button) and when all the questions have been displayed to return to the main page, where there is a link "take the test". I know that it certainly isn't the most efficient way to do it, but I want to know what is wrong with my code. urls.py: path('start',views.startquiz,name='start'), path('test/<int:pk>/<int:index>',views.TakeQuizView.as_view(),name='test'), views.py: def startquiz(request): questions=list(Question.objects.all()) question=random.choice(questions) pk=question.id return redirect(reverse('quiz:test',args=(pk,1))) class TakeQuizView(LoginRequiredMixin,View): questions=list(Question.objects.all()) n=len(questions) def get(self,request,pk,index): question=Question.objects.get(id=pk) self.questions.remove(question) ctx={'question':question,'index':index,'n':self.n} return render(request,'quiz/test.html',ctx,) def post(self,request,pk,index): if index<self.n: question=random.choice(self.questions) pk=question.id return redirect(reverse('quiz:test',args=(pk,index+1))) else: self.questions=list(Question.objects.all()) return redirect(reverse_lazy('quiz:main')) ` Whenever I take the quiz for the first time, all works fine, and after all questions have been displayed, it returns to the main page. However, if I want to take the test again, the questions list fails to be filled up again and I get an error: list.remove(x): x not in list from remove() I also tried to put in the get method the following code: ` if index==1: self.questions=list(Question.objects.all()) ` However it … -
pip command not working. I tried upgrading pip <pip install --upgrade pip> and < python -m pip install -U pip> but it's giving out a similar error
I tried installing django but it gave out the following error ERROR: Exception: Traceback (most recent call last): File "C:\Program Files\Python310\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _main status = self.run(options, args) File "C:\Program Files\Python310\lib\site-packages\pip\_internal\cli\req_command.py", line 203, in wrapper return func(self, options, args) File "C:\Program Files\Python310\lib\site-packages\pip\_internal\commands\install.py", line 315, in run requirement_set = resolver.resolve( File "C:\Program Files\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 94, in resolve It's a long one... Then I tried using pip for different packages and it turns out I'm getting a similar error in almost all of the so I tried to upgrade them python -m pip install -U p and pip install --upgrade pip but it's giving out a similar error Traceback (most recent call last): File "C:\Program Files\Python310\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _main status = self.run(options, args) File "C:\Program Files\Python310\lib\site-packages\pip\_internal\cli\req_command.py", line 203, in wrapper return func(self, options, args) File "C:\Program Files\Python310\lib\site-packages\pip\_internal\commands\install.py", line 315, in run requirement_set = resolver.resolve( File "C:\Program Files\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 94, in resolve result = self._result = resolver.resolve( File "C:\Program Files\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 472, in resolve -
How can i return json web token after creating user in djoser with dango rest framework
This is my serializer file for updating the default UserCreateSerializer of djoser. I saw this question but did'nt understand anything please help me to implement this. -
Celery KeyError: 'myproject.tasks.async_task'
When i'm trying to run celery background task then it giving me error: KeyError: 'myproject.tasks.async_task' I'm using python version: 3.8.10, django verion: 4.1.2 , celery version: 5.2.7 and rabbitmq version: 3.8.2 here below screenshot is my project structure: here below is my code for background task: settings.py: CELERY_BROKER_URL = 'amqp://localhost:5672' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json' myproject/init.py: from __future__ import absolute_import, unicode_literals from myproject.celery import app as celery_app __all__ = ['celery_app'] celery.py from __future__ import absolute_import import os, sys from celery import Celery import django from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') app = Celery('myproject') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks() @app.task(bind=True) def debug_task(self): print('Request: {0!r}'.format(self.request)) tasks.py: from __future__ import absolute_import from celery import shared_task from time import sleep import os @shared_task def sleepy(duration): sleep(duration) return None @shared_task def async_task(save_path, name_of_file): sleep(30) completeName = os.path.join(save_path, name_of_file+".html") file1 = open(completeName, "w") toFile = 'test data' file1.write(toFile) file1.close() return 'task complete' views.py def add_product(request): if request.method == 'POST': id_col_data = request.POST.getlist('services') target_col = request.POST.get('target_col') file_name = request.POST.get('file_name') amz_columns_dict = {'id_col': id_col_data, 'target_col': target_col, 'wt_col': None} import os.path save_path = '/home/satyajit/Desktop/' if os.path.exists(save_path): try: from myproject.tasks import async_task name_of_file = file_name status = async_task.delay(save_path, name_of_file) #celery task print('status---->', status) except Exception as e: print('task …