Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Mustn't end this function in here?
def createRoom(request): form = RoomForm() if request.method == 'POST': form = RoomForm(request.POST) if form.is_valid(): ***return redirect('home')*** #In here form.save() context = {'form' : form} return render(request, 'base/room_form.html', context) To my information, when python see a return in a function, the function is ending there. But in this code piece, python entering the if statement and applying the return command but after that, whereas python saw the return, function isn't ending . After the if statement, python, applying the return in the following code too. How can it be possible? Can anyone explain this please? -
how to filter objects by a specific choice
I have model like this: class ScientificInfo(models.Model): id = models.AutoField(primary_key=True) user = models.OneToOneField(User, on_delete=models.CASCADE) is_approved = models.CharField(max_length=64, choices=(('0', 'yes'), ('1', 'no')), blank=True) is_interviewed = models.BooleanField(default=False) how can I filter this model by is_approved field which is a choicefield? I wrote this line but doesnt work approved = ScientificInfo.objects.filter(is_approved__in='0').all() -
Represent string a model in django
I have a model and it contains a foreign key I want when I call foreign key like this Entry.foreignkey not to give me the id of that but some other data. How can I achieve this? -
How to set a timer inside the get request of an APIView?
I am trying to build a timer inside a get method in a DRF View. I have created the timer method inside the GameViewController class and what I am trying to achieve is that a every minute (5 times in a row) a resource object is shown to the user through the get request and a game round object is created. My View works at the moment, however the timer doesn't seem to be doing anything. I know this isn't exactly how things are done in django but this is how I need to do it for my game API for game logic purposes. How can I make the timer work? Do I need to use something like request.time or such? Thanks in advance. views.py class GameViewController: def timer(self): """Start a new timer as soon as a gameround has been started/created""" start_time = datetime.now() elapsed_time = None if start_time is not None: elapsed_time = time.perf_counter() """Stop the timer, and return the elapsed time""" if start_time is None: elapsed_time = time.perf_counter() - start_time return elapsed_time ... class GameView(APIView): def get(self, request, *args, **kwargs): ... round_number = gametype.rounds time = controller.timer() while round_number != 0: if time >= 1: random_resource = Resource.objects.all().order_by('?').first() … -
'str' object has no attribute '_encode_json'
I've been writing a test with RequestFactory to test one of my views, with the following code: class ViewTestCase(TestCase): @classmethod def setUp(self): self.factory = RequestFactory self.user = User.objects.create_user( first_name='tester', username='test1', password='123', email='testuser@something.com' ) def test_room_creation(self): payload = {"titlePlanning": "Test1","styleCards": "Fibonnaci","deck": ["1","2","3"]} request = self.factory.post('/room', payload) request.user = self.user response = BeginRoom.as_view()(request) self.assertEqual(response.status_code, 200) This is the data that I need to send to use POST: class BeginRoom(APIView): permissions_classes = (IsAuthenticated,) def post(self, request, format=None): data= self.request.data user = request.user name = data['titlePlanning'].strip() styleCards = data['styleCards'] cards = data['deck'] My problem is that whenever I run my tests I get the following error: data = self._encode_json({} if data is None else data, content_type) AttributeError: 'str' object has no attribute '_encode_json' What should I do? I'm lost from here and can't find anything related. Any help is appreciated! -
Credit card payment in Django (Python) with RedSys
I need to implement payment with credit card in a Django Project. But, I don't know how to start, and I can't find any information about do it. What's the best module to do the integration? The module is well documented? and it has code examples about the correct implementation. Please, if you know how to do it, help me. I'm collaborating with an ONG and we need to implement this for donations payments. Thanks. Regards, -
How to show in templates if a scheduled end of project is delayed based on end date in django?
I'm kinda stuck with a logic wherein if a project that is past it's due date and it's progress value is still not in 100% completion it should show a delayed text or if it's progress is still not in 100% but in the range of date end it should show an ongoing text. Models.py class Projects(models.Model): id=models.AutoField(primary_key=True) project_name=models.CharField(max_length=255) project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, limit_choices_to={'is_project_manager' : True}) client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True) project_pic=models.ImageField(upload_to='static/website/project-images') project_start_date=models.DateField(null=True) project_end_date=models.DateField(null=True) project_description=models.TextField(null=True) project_progress = models.PositiveIntegerField(null=True, default=0, validators=[ MaxValueValidator(100), MinValueValidator(0) ]) created_at=models.DateTimeField(auto_now_add=True) updated_at=models.DateTimeField(auto_now=True) is_draft = models.BooleanField(default=True) objects=models.Manager() class Meta: verbose_name_plural = 'Project' def __str__(self): return f'{self.project_name}' Views.py @login_required(login_url='user-login') def project_details(request, pk): projects = Projects.objects.get(id=pk) employed = Employee.objects.filter(project_site=projects) invents = Project_Inventory.objects.filter(project_site=projects) context = { 'projects' : projects, 'employed' : employed, 'invents' : invents, } template_name ='project-admin/project-details.html' return render(request, template_name, context) Project-details template <div class="col-md-11"> <div class="card"> <div class="card-header text-white"> Project Details </div> <div class="row p-3"> <div class="col-md-8"> <table class="table table-borderless"> <thead> <span class="h4">Project Information</span class="h4"> <hr> </thead> <tbody> <tr> <th scope="row">Project Name</th> <td>{{ projects.project_name }}</td> </tr> <tr> <th scope="row">Project Manager</th> <td>{{ projects.project_manager }}</td> </tr> <tr> <th scope="row">Start Date</th> <td>{{ projects.project_start_date }}</td> </tr> <tr> <th scope="row">End Date</th> <td>{{ projects.project_end_date }}</td> </tr> <tr> <th scope="row">Description</th> <td>{{ projects.project_description }}</td> </tr> <tr> <th scope="row">Progress</th> <td><div class="progress"> <div class="progress-bar" role="progressbar" … -
How to filter objects in Django by time since last 24 hours?
Assuming there's a starting time from 00:00 to 00:00 every day, how best are Django objects filtered by time, based on the current day? I initially came up with this: from django.utils import timezone yesterday = timezone.now() - timezone.timedelta(1) qs = Foo.objects.filter(date__gte=yesterday) ## yesterday = datetime.date.today() - datetime.timedelta(1) qs = Foo.objects.filter(date__gte=yesterday) However, this is not particularly right. I would prefer time starting exactly from 00:00 to timezone.now() -so something like Foo.objects.filter(date__range=[00:00, timezone.now()]) Thank you. -
Problem with Link when I'm sharing It with friends, which I deployed in Heroku
So I am learning Django and I was watching a Django tutorial so I started copying the code and then after everything was done I deployed it in Heroku, so when I was trying to share the link to one of my friends i came across this Now Dennis Ivy is the youtuber from whom I copied the code, So all I want to ask is that how come his name is appearing in this link of the project which I wrote and deployed. I don't want to take any credit, I'm just curious. -
How can I get this form to work and save the updated information?
I was successful at getting the form to appear on the modal which was an issue I had earlier, now I'm struggling to make this work. Any way to work my way around this?? Also I wanna check if method == 'POST' before checking if the form is valid but can't seem to find a solution.. views: class ProfileDetailView(LoginRequiredMixin, DetailView): model = Profile template_name = 'network/profile.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) user = User.objects.get(username__iexact=self.request.user) profile = Profile.objects.get(user=user) form = ProfileModelForm(instance=profile) confirm = False rel_r = Relationship.objects.filter(sender=profile) rel_s = Relationship.objects.filter(receiver=profile) rel_receiver = [] rel_sender = [] for item in rel_r: rel_receiver.append(item.receiver.user) for item in rel_s: rel_sender.append(item.sender.user) if form.is_valid(): form.save() confirm = True context["rel_receiver"] = rel_receiver context["rel_sender"] = rel_sender context["posts"] = self.get_object().get_all_authors_posts() context["len_posts"] = True if len(self.get_object().get_all_authors_posts()) > 0 else False context["form"] = form context["confirm"] = confirm context["profile"] = profile return context Form: class ProfileModelForm(forms.ModelForm): class Meta: model = Profile fields = ('first_name', 'last_name', 'bio', 'avatar') Model: class Profile(models.Model): first_name = models.CharField(max_length=64, blank=True) last_name = models.CharField(max_length=64, blank=True) user = models.OneToOneField(User, on_delete=models.CASCADE) country = models.CharField(max_length=64, blank=True) avatar = models.ImageField(upload_to='avatars', default='avatar.png') background = models.ImageField(upload_to='backgrounds', default='background.png') following = models.ManyToManyField(User, related_name='following', blank=True) bio = models.TextField(default="No Bio..") updated = models.DateTimeField(auto_now=True) created = models.DateTimeField(auto_now_add=True) slug = models.SlugField(unique=True, … -
Manipulate with value list in Django
I have a value list in Django maca = Orders.objects.all().values_list("order_date") But I want to manipulate with order date. It shows up as YYYY-MM-DD and I want to change the format. For example maca = Orders.objects.all().values_list(datetime.strftime("order_date", "%d/%m/%Y") It is not only this case. Thanks a lot -
Django 'int' object is not iterable when trying to update object
I am getting this error when trying to update objects from false to True. here is my code: class ListNoti(LoginRequiredMixin,ListView): raise_exception = True model = Notifications template_name = 'notifications/notifications.html' def get_context_data(self, **kwargs): data = super(ListNoti,self).get_context_data(**kwargs) data['noti'] = Notifications.objects.filter(receiver=self.request.user,is_seen=False).order_by('-date').update(is_seen=True) return data .update(is_seen=True) raising this error TypeError at /notification/ 'int' object is not iterable -
How to have a new html site created when a button is clicked?
I'm working on a beginner django project trying to create a forum. User should be able to create new threads when they click on a button after they wrote their question and so on. So for each thread created there has to be created a new html file with some template and the new question. How can I do this? -
Running Several Server and Clients From a Shared Local Drive?
I have devolved a web application that manages prescriptions for a pharmacy. It uses a SQLite database, Django server, GraphQL API, and React on the frontend. It takes several weeks to get elevated privileges for any task so I have installed all of this software without admin rights (nodejs, npm, py, etc). All of the software is installed into a shared drive so all of the computers may access the files. Also, please note that all of the data must be local and can not be hosted by a third party; I also doubt they will be able to host it on a server themselves. So right now I have a .bat file that starts up the Django server and runs the React production build (npm run build, serve -s build). The problem is when several users try to use the React build it gives a Server Error 500 msg. My question is: Is there a easier way to run the Django/react builds without having to make one copy of the repository in the shared drive per user? Additionally, is it okay to have several Django servers connected to the SQLite database or should I do something else? -
TypeError:ForeignKey(['app_label.model_name']) is invalid.First parameter to ForeignKey must be either a model, a model name, or the string 'self'
I am trying to create a custom model in django. but when try to migrate , i get the error : TypeError: ForeignKey(['custom_models.CustomUser']) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string 'self' I have tried everything mostly answers are related to foreign key but i did not use ay foreign key relation in models here is my code: models.py : from django.db import models from django.contrib.auth.models import AbstractBaseUser , BaseUserManager class CustomUserManager(BaseUserManager): def create_user(self , email , username , password=None): if not email: raise ValueError('this is not correct email.') if not username: raise ValueError('this is not correct username.') user = self.model( email = self.normalize_email(email), usename = username, ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self , email , username , password ): user = self.create_user( email = self.normalize_email(email), username = username, password = password ) user.is_admin=True user.is_staff=True user.is_superuser=True user.is_active=True user.save(using=self._db) return user class CustomUser(AbstractBaseUser): username = models.CharField(max_length=60 ) email = models.EmailField(max_length=60 , verbose_name='email' , unique=True) date_joined = models.DateTimeField(auto_now=True , verbose_name='date joined') last_login = models.DateTimeField(auto_now=True , verbose_name='last login') is_admin = models.BooleanField(default=False) is_staff = models.BooleanField(default=True) is_active = models.BooleanField(default=False) is_superuser= models.BooleanField(default=False) hide_mail= models.BooleanField(default=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = 'username' objects = CustomUserManager() def __str__(self): return … -
Django Model: ForeignKey and Relations
I have 2 models: class Post(models.Model): pass class Vote(models.Model): post = models.ForeignKey(Post) user = models.ForeignKey(django.contrib.auth.models.User) I want to allow logged User to make a vote on Post's Admin site. I think about 3 solution as below: Add 'voted' field to Post model. Customize Post's Admin forms by add a Button control and implement do_vote() function in Post model to call when the Button is clicked. Do you have any other solutions? Additionally, I don't know how to implement 2 above solutions. Could you give me some lines of code? -
'str' object has no attribute 'makefile'
Traceback (most recent call last): File "C:\Users\Rochak.virtualenvs\GFG\GFG\lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(request) File "C:\Users\Rochak.virtualenvs\GFG\GFG\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Rochak.virtualenvs\GFG\GFG\Scripts\authentication\views.py", line 7, in home return HTTPResponse("Hello Rochak!") File "C:\Program Files\Python310\lib\http\client.py", line 256, in init self.fp = sock.makefile("rb") Exception Type: AttributeError at /authentication/hello/ Exception Value: 'str' object has no attribute 'makefile' -
Django UUID Filtering
I have the following model: class MyModel(models.Models): uuid = models.UUIDField(default=uuid.uuid4, db_index=True, editable=False, unique=True) name = models.CharField(max_length=200) In my django admin, I have the following search_fields: search_fields = ["uuid__exact", "name"] This should translate to the following query: MyModel.objects.filter(Q(uuid__exact=query) | Q(name__icontains=query)) However, running that query throws the following error: ValidationError: ['“test name” is not a valid UUID.'] How do I prevent the uuid portion of the query from throwing a ValidationError? I want to be able to search my model by either the uuid or the name field in the django admin. -
need to write a migration file to update paymentTransaction from session to E-commerce
from django.db import migrations, models from payment.models import PaymentTransaction from config import constants class Migration(migrations.Migration): def forwards_func(apps, schema_editor): PaymentTransaction = apps.get_model("session", "PaymentTransaction") db_alias = schema_editor.connection.alias payment_transaction=[] for payment_txn in PaymentTransaction: payment_transaction=PaymentTransaction.objects.using(db_alias).session().update(type=constants.E_COMMERCE) payment_transaction.save() return payment_transaction dependencies = [ ('payment', '0019_auto_20211119_1447'), ] operations = [ migrations.RunPython(forwards_func) ] ** But still have the type"session" it's not updated to E-commerce ** -
How to get real path instead of fakepath while using AJAX with DJANGO?
I am trying to get real path of image where it is uploaded in the local directory instead of fakepath. Before using AJAX, I was able to get the real path but to stop the page refreshing on each time form is submitted ( the reason is I wanted the current values present and not to go back to the default values each time form is submitted ), I incorporated AJAX. I understand its a security measure and all that but I am working in local environment and does anyone have any work around that? What I want is something in the top link ( I got this link by submitting values through admin ) but what I am getting is something in bottom ( through submit button on form ). I am also attaching relevant parts of my DJANGO code as well: MODELS.py from django.db import models from django.db import IntegrityError from django.http import HttpResponse from datetime import datetime import uuid # lists of options cities_name_list=(("Abbotabad","Abbotabad"),("Bahawalpur","Bahawalpur"),("Charsaddah","Charsaddah"),("Dera Ghazi Khan","Dera Ghazi Khan"),("Faisalabad","Faisalabad"),("Gawadar","Gawadar"),("Islamabad","Islamabad"),("Rawalpindi","Rawalpindi"),("Karachi","Karachi"),("Lahore","Lahore"),("Multan","Multan"),("None","None")) massavi_sheets=(("Alif-1","Alif-1"),("Bay-1","Bay-1"),("Jeem-1","Jeem-1"),("Daal-1","Daal-1"),("Hay-1","Hay-1"),("Wao-1","Wao-1"),("None","None")) # define upload path function def content_file_name(instance, filename): name, ext = filename.split('.') file_path = 'images/{mauza}/{form_id}.{ext}'.format( form_id=instance.form_id, mauza=instance.mauza, ext=ext) return file_path # Create your models here. class UploadImage(models.Model): form_id … -
How to have two workers for heroku.yml?
I have the following heroku.yml. The 'containers' share the same Dockerfile: build: docker: web: Dockerfile celery: Dockerfile celery-beat: Dockerfile release: image: web command: - python manage.py migrate users && python manage.py migrate run: web: python manage.py runserver 0.0.0.0:$PORT celery: celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info celery-beat: celery --app=my_app beat -l info I intended to have three containers, but it turns out that Heroku accepts only one web and the other should be workers. So what do I modify at heroku.yml to have celery and celery-beat containers as worker? -
Double filter django
I started learning django and decided to create a clothing store. I would like to know how to make a filter to display products like men's - t-shirt || Female - T-shirt? At the moment, I have learned to display only by category T-shirts, hoodies and so on. How to make double filtering so that there is sorting by female and male? views.py class StuffCategory(ListView): model = Stuff template_name = 'shop/shop.html' context_object_name = 'stuffs' def get_queryset(self): return Stuff.objects.filter(category__slug=self.kwargs['category_slug'], draft=False) class StuffView(ListView): model = Stuff template_name = 'shop/shop.html' context_object_name = 'stuffs' paginate_by = 3 models.py class Category(models.Model): name = models.CharField(max_length=100) slug = models.SlugField(max_length=200, unique=True) class Meta: verbose_name = 'Категория' verbose_name_plural = 'Категории' def __str__(self): return self.name def get_absolute_url(self): return reverse('category', kwargs={'category_slug': self.slug}) class Gender(models.Model): name = models.CharField(max_length=100) slug = models.SlugField(max_length=200, unique=True) class Meta: verbose_name = 'Гендер' verbose_name_plural = 'Гендеры' def __str__(self): return self.name def get_absolute_url(self): return reverse('gender', kwargs={'gender_slug': self.slug}) class Stuff(models.Model): name = models.CharField(max_length=100) price = models.FloatField() description = models.TextField() composition = models.CharField(max_length=150) instruction = models.CharField(max_length=150) manufacturer_country = models.CharField(max_length=150) category = models.ForeignKey(Category, on_delete=models.PROTECT) gender = models.ForeignKey(Gender, on_delete=models.PROTECT) size = models.ManyToManyField(Size) photo = models.ImageField(upload_to='items/') slug = models.SlugField(max_length=200, unique=True) draft = models.BooleanField("Черновик", default=False) class Meta: verbose_name = 'Вещь' verbose_name_plural = 'Вещи' def __str__(self): … -
Why do I have duplicate views in my Django rest framework urls.py?
I'm trying to figure out how these endpoints work in django rest framework. urls.py urlpatterns = [ path('api-auth', include('rest_framework.urls', namespace='rest_framework')), path('login', django_views.LoginView.as_view(template_name='rest_framework/login.html'), name='login'), path('logout', django_views.LogoutView.as_view(), name='logout'), path('register', views.UserCreate.as_view()), path('get_jwt_token', obtain_jwt_token), path('eos_verify_jwt_token', views.EOSVerifyJSONWebToken.as_view()), ] I get the following patterns: Using the URLconf defined in ugh_studios_webservices.urls, Django tried these URL patterns, in this order: api/ api-auth login/ [name='login'] api/ api-auth logout/ [name='logout'] api/ login [name='login'] api/ logout [name='logout'] api/ register api/ get_jwt_token api/ eos_verify_jwt_token admin/ The current path, api/api-auth, didn’t match any of these. Why is there two login endpoints? What I'm trying to do is have the following endpoints: Login Endpoint Logout Endpoint User registration endpoint JWT Token request + validation endpoints - this seems to work Custom Validate user login (username + password) endpoint (response needs to be custom for integration with a separate application, it expects a certain response body) Needs to be viewable in the browsable API https://www.django-rest-framework.org/topics/browsable-api/ - Why are none of my urls viewable except for the 'register' url? Needs to be able to work with both an HTTP POST request (for validation/login) as well as an html template/view I do not want to create duplicate code either, it seems like the rest_framework comes with some … -
Google app engine Django app is crashing intermittently but the log files aren't showing me why
I have a Django 4.0 application running on google app engine, and for the most part it works fine. However I have a particular page which seems to crash the application after I load the page several times. On my laptop I don't see this behavior, so I'm trying to debug what is going wrong when it is running on GAE but I don't have much visibility into what is happening. Watching the logs doesn't tell me anything interesting, just that the workers are shutting down and then that they are restarting: gcloud app logs tail -s default 2022-01-26 16:02:38 default[fixeddev] 2022-01-26 08:02:38,933 common.views INFO Application started 2022-01-26 16:03:40 default[fixeddev] "GET /organization/clean_up_issues/ HTTP/1.1" 200 2022-01-26 16:03:56 default[fixeddev] "GET /organization/clean_up_issues/ HTTP/1.1" 200 2022-01-26 16:04:10 default[fixeddev] "GET /organization/clean_up_issues/ HTTP/1.1" 500 2022-01-26 16:04:15 default[fixeddev] [2022-01-26 16:04:15 +0000] [12] [INFO] Handling signal: term 2022-01-26 16:04:15 default[fixeddev] [2022-01-26 08:04:15 -0800] [22] [INFO] Worker exiting (pid: 22) 2022-01-26 16:04:15 default[fixeddev] [2022-01-26 08:04:15 -0800] [25] [INFO] Worker exiting (pid: 25) 2022-01-26 16:04:15 default[fixeddev] [2022-01-26 08:04:15 -0800] [27] [INFO] Worker exiting (pid: 27) 2022-01-26 16:09:49 default[fixeddev] "GET /_ah/start HTTP/1.1" 200 2022-01-26 16:09:49 default[fixeddev] [2022-01-26 16:09:49 +0000] [10] [INFO] Starting gunicorn 20.1.0 2022-01-26 16:09:49 default[fixeddev] [2022-01-26 16:09:49 +0000] [10] … -
Django how to handle 2 Post Requests
I have a micro ticket system. The user has information about the ticket, a button to mark as solved/mark as waiting and a message box to add new messages in to the ticket for the admin. You can ignore the most stuff in the forms, important are the GET/POST requests of the forms. \\views.py def ticket_system_view(request, id): obj = Ticket.objects.get(id=id) waiting_message = "Mark as 'Waiting'" solved_message = "Mark as 'Solved'" if obj.reopened_counter > 5: solved_message = 'Ticked solved forever' waiting_message = 'Ticked solved forever' button_form = TicketSolved(request.POST) time.sleep(2) if button_form.is_valid: obj.reopened_counter += 1 if obj.reopened_counter > 5: obj.ticket_waiting = True obj.ticket_solved = False if obj.ticket_waiting == False and obj.ticket_solved == True: obj.ticket_waiting = True obj.ticket_solved = False else: obj.ticket_waiting = False obj.ticket_solved = True obj.save() user_form = TicketMessagesForm( request.POST, instance=TicketMessages(id=id)) if user_form.is_valid(): instance = user_form.save(commit=False) #this form doesnt work yes instance.save() return render(request, 'ticket-system.html', {'obj': obj, 'waiting_message': waiting_message, 'solved_message': solved_message, 'button_form': button_form, 'user_form': user_form}) \\forms.py class TicketSolved(forms.Form): delete = forms.CharField( label='', max_length=0).widget = forms.HiddenInput() class TicketMessagesForm(forms.ModelForm): class Meta: model = TicketMessages fields = ( 'user_message', ) \\models.py if you need class Ticket(models.Model): user = models.ForeignKey( settings.AUTH_USER_MODEL, default=None, null=True, on_delete=models.CASCADE, ) title = models.CharField(max_length=200) description = models.TextField() creator_adress = models.GenericIPAddressField(null=True) start_date …