Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
You cannot call this from an async context - use a thread or sync_to_async. Django ORM
I wrote the following code: class BookmakerA: def __init__(self) -> None: self.bookmaker = None async def _init(self): self.bookmaker, _ = await Bookmaker.objects.aget_or_create(name="BookmakerA", defaults={"name": "BookmakerA"}) I call this class from a Celery task which looks as follows: @shared_task def get_bookmaker_matches(): start = time.time() bookmakera = BookmakerA() loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(bookmakera._init()) This however results in the following error: django.core.exceptions.SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async. Why does this happen and how do I resolve this. Using Django 4.2.6 which supports async ORM (acreate_or_create, aget, so on) -
Declare Instance variables in django-formtools SessionWizardView
Using SessionWizardView, I want to declare Instance variables, that persist between steps. However, they are not persistent, when using: def __init__(self): self.variable = {} -
ValueError in Django. Invalid literal for int() with base 10: ' '
I'm creating a portfolio website using Django where I created a superuser and implemented a user interface for myself from where I can login and update my skills or add projects instead of manually updating the frontend of the website. I deployed it on Railway. When I login on the website, I get the following error: Environment: Request Method: POST Django Version: 4.2.6 Python Version: 3.8.18 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'whitenoise.runserver_nostatic', 'django.contrib.staticfiles', 'base'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "/opt/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/opt/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 46, in _wrapper return bound_method(*args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/views/decorators/debug.py", line 92, in sensitive_post_parameters_wrapper return view(request, *args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 46, in _wrapper return bound_method(*args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 134, in _wrapper_view response = view_func(request, *args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 46, in _wrapper return bound_method(*args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/views/decorators/cache.py", line 62, in _wrapper_view_func response = view_func(request, *args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/contrib/auth/views.py", line 90, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) … -
custom permissions in django DRF class based view
I'm trying to set custom permissions in a ModelViewSet. I want to allow any authenticated user to list and retrieve items but only Admin and Manager can create, update, and destroy. Here is the relevant code in views.py from rest_framework import viewsets from .serializers import MenuItemSerializer from rest_framework import viewsets from .permissions import IsManager from rest_framework.permissions import IsAuthenticated, IsAdminUser class Showitem(CustomThrottleMixin, viewsets.ModelViewSet): queryset = MenuItem.objects.all() serializer_class = MenuItemSerializer authentication_classes = [TokenAuthentication] permission_classes = [] filterset_fields = ['category', 'title','price','featured'] ordering_fields = ['title','title', 'category'] search_fields=['title','category__title'] def get_permissions(self): #Override default method. Set custom permissions for each action if self.action in ['update', 'partial_update', 'destroy', 'create']: self.permission_classes = [IsAdminUser, IsManager] elif self.action in ['list', 'retrieve']: self.permission_classes = [IsAuthenticated] #return default method if none of the above is true return super().get_permissions() Here permissions.py class IsManager(permissions.BasePermission): def has_permission(self, request, view): if request.user.is_authenticated: return request.user.groups.filter(name='manager').exists() return False when I try to post a new Item as admin user via the api endpoint everything works. If I try the same as Manager I get " "detail": "You do not have permission to perform this action."" -
Django Duplicate object with inline object
I have recipe model with ingredients and ingredients quantities. MEAL_TYPES = (("midi", "Midi"), ("soir", "Soir"), ('all', 'Non spécifié')) class Ingredient(models.Model): name = models.CharField(max_length=100) # Vous pouvez ajouter d'autres champs pour stocker des informations supplémentaires sur les ingrédients def __str__(self): return self.name class Recipe(models.Model): """ A model to create and manage recipes """ user = models.ForeignKey( User, related_name="recipe_owner", on_delete=models.CASCADE ) title = models.CharField(max_length=300, null=False, blank=False) description = models.CharField(max_length=500, null=False, blank=False) instructions = RichTextField(max_length=10000, null=False, blank=False) ingredients = RichTextField(max_length=10000, null=False, blank=False) image = ResizedImageField( size=[400, None], quality=75, upload_to="recipes/", force_format="WEBP", blank=False, null=False, ) image_alt = models.CharField(max_length=100, default="Recipe image") meal_type = models.CharField(max_length=50, choices=MEAL_TYPES, default="all") calories = models.IntegerField(default=0) posted_date = models.DateTimeField(auto_now=True) newingredient = models.ManyToManyField(Ingredient, through='IngredientQuantite') class Meta: ordering = ["-posted_date"] def __str__(self): return str(self.title) class IngredientQuantite(models.Model): recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE) quantity = models.FloatField(default=0) unite = models.CharField(default="g", max_length=20, choices=[("g", "g"),('mg', 'mg'), ("ml", "ml"),('kg', "kg"), ('cl', "cl"), ('l', "l"), ('caf', "cuillère à café"), ('cas', "cuillère à soupe"), ('verre', "verre"), ('bol', "bol"), ('pincee', "pincée"), ('unite', "unité")]) # Le champ "quantity" stocke la quantité de cet ingrédient dans la recette. # 'g', 'kg', 'ml', 'cl', 'l', 'cuillère à café', 'cuillère à soupe', 'verre', 'bol', 'pincée', 'unité' def __str__(self): return f"{self.quantity} {self.ingredient} in {self.recipe}" To add … -
Django REST: endpoint for creating multiple models
In my service, when registering a user, two entities must be created: the user and the company, to which the user entity will be immediately linked. To do this, I created an endpoint in which I use two serializers (for the user and for the company). But there are some problems with this solution: Fields for one of the serializers are not displayed in Django Spectacular (Swagger); Fields for one of the serializers are not available in the DRF BRowsable API; Ugly code; class UserCreateViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet): """ Creates user accounts """ queryset = User.objects.all() serializer_class = CreateUserSerializer permission_classes = (AllowAny,) REQUIRED_FIELDS = ( 'email', 'password', 'position', 'company_name', 'phone_number' ) def create(self, request, *args, **kwargs): data = request.data provided_fields = set(data.keys()) for field in self.REQUIRED_FIELDS: if field not in provided_fields: return Response( {"detail":f"{field} not provided"}, status=400 ) # --- Creating company for user data['name'] = data['company_name'] company_serializer = CompanyReducedSerializer(data=request.data) company_serializer.is_valid(raise_exception=True) self.perform_create(company_serializer) data['company'] = company_serializer.data['id'] # --- # Code from super() # --- Creating user user_serializer = self.get_serializer(data=request.data) user_serializer.is_valid(raise_exception=True) self.perform_create(user_serializer) headers = self.get_success_headers(user_serializer.data) # --- return Response( status=201, data=user_serializer.data, headers=headers ) I considered options using multi-table inheritance, but for some reasons, this solution does not suit me. The company and user entities … -
how do solve this 'TypeError: Object of type ValueError is not JSON serializable' in my program?
in windows 10 , i am using Django==4.2.4 and visual studio code and **djangorestframework==3.14.0 **, react 17.0.2. BACKEND: views.py: section1 @api_view(http_method_names=['POST']) def register_user(request): data = request.data print(data) try: CustomUser = get_user_model() email_exists = CustomUser.objects.filter(email=data.get('email')).first() if not email_exists: random_username_list = generate_username(1) random_username = None for random_value in random_username_list: random_username = str(random_value) print(random_username) user = CustomUser.objects.create(first_name=data.get('name'), last_name=data.get('family'),username=random_username, email=data.get('email'),password=make_password(data.get('password'))) print(user.id) user = get_object_or_404(CustomUser , username=user) print(user) srz_data = UserSerializerWithToken(instance=user, many=False) print(srz_data.data) return Response(srz_data.data, status=status.HTTP_201_CREATED) else: return Response({"detail": "user with this email already exists"}, status=status.HTTP_400_BAD_REQUEST) except ValueError as error: message = { "detail": "internal error of the server !!! , please you're waiting or contacting to admin of the server", } return Response(error, status=status.HTTP_500_INTERNAL_SERVER_ERROR) else: print("Nothing went wrong") finally: print("The 'try except' is finished") section2 class MyCreatorTokenSerializer(TokenObtainPairSerializer): def validate(self, attrs): data = super().validate(attrs) serializer = UserSerializerWithToken(self.user).data for k, v in serializer.items(): data[k] = v return data class MyCreatorTokenView(TokenObtainPairView): serializer_class = MyCreatorTokenSerializer serializers.py: class UserSerializer(serializers.ModelSerializer): name = serializers.SerializerMethodField(read_only=True) family = serializers.SerializerMethodField(read_only=True) _id = serializers.SerializerMethodField(read_only=True) isAdmin = serializers.SerializerMethodField(read_only=True) sex = serializers.SerializerMethodField(read_only=True) userPicture = serializers.SerializerMethodField(read_only=True) userIp = serializers.SerializerMethodField(read_only=True) userInfo = serializers.SerializerMethodField(read_only=True) class Meta: model = get_user_model() # fields = "__all__" fields = ['_id', 'name', "family", 'email', 'sex' ,'userIp','userInfo' , 'userPicture','isAdmin' ] def get_name(self, obj): name = obj.first_name … -
error: NoReverseMatch at / Reverse for 'add_time_slot' with arguments '('',)' not found. 1 pattern(s) tried: ['add_time_slot/(?P<turf_id>[0-9]+)/\\Z']
i getting an error while doing python django project. error NoReverseMatch at / Reverse for 'add_time_slot' with arguments '('',)' not found. 1 pattern(s) tried: ['add_time_slot/(?P<turf_id>[0-9]+)/\Z'] <a class="nav-link" href="{% url 'add_time_slot' turf_id %}">Add Time Slots</a> i was tried many things but nothing works. Please help me guys....enter image description here models.py class TimeSlot(models.Model): turf = models.ForeignKey(Venue, on_delete=models.CASCADE) start_time = models.DateTimeField() end_time = models.DateTimeField() price = models.DecimalField(max_digits=10, decimal_places=2) booked = models.BooleanField(default=False) def __str__(self): return f"{self.turf.name} - {self.start_time} to {self.end_time}" views.py def add_time_slot(request, turf_id): turf = Venue.objects.get(pk=turf_id) if request.method == 'POST': form = TimeSlotForm(request.POST) if form.is_valid(): timeslot = form.save(commit=False) timeslot.turf = turf timeslot.save() return redirect('add_time_slot', turf_id=turf_id) else: form = TimeSlotForm() return render(request, 'add_time_slot.html', {'form': form, 'turf': turf}) urls.py urlpatterns = [ path('add_time_slot/<int:turf_id>/', views.add_time_slot, name='add_time_slot'), ] html ` Add Time Slots ` -
Docker-based hosting unable to reach database
I am a junior developer using django as my first web development framework. During a boilerplate construction, I am not able to host and reach a postgres database using docker. The app content is available on repository https://github.com/trouchet/tarzan. The docker daemon outputs error django.db.utils.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution after I run command docker-compose build followed by command docker-compose run. I use the variable DATABASE_HOST the same as docker service db. I also make sure, there is no other postgres service on current machine. Thanks in advance for any provided help. -
How to get specific values in Django UpdateView?
I have a generic UpdateView where the leaders can manage the settings of the users whom connected to the leaders's company. I like to have only that values in the select field where the company_id is equal to the the company_uuid in the url. Now the leader who want to set the team can access to all of the companies teams. Thank you in advance models.py class Company(models.Model): def __str__(self): return str(self.company_name) def generate_uuid(): return uuid.uuid4().hex company_name = models.SlugField(max_length=100) company_uuid = models.CharField(default=generate_uuid, editable=True, max_length=40) class Team(models.Model): def __str__(self): return str(self.team) team = models.CharField(max_length=200, blank=True, null=True) company = models.ForeignKey(Company, null=True, blank=True, on_delete=models.CASCADE) class Profile(models.Model): def __str__(self): return str(self.user) user = models.OneToOneField(User, null=True, on_delete=models.CASCADE) date = models.DateField(auto_now_add=True, auto_now=False, blank=True) company = models.ForeignKey('Company', on_delete=models.CASCADE, blank=True, null=True) team01 = models.ForeignKey('Team', on_delete=models.CASCADE, null=True, blank=True, related_name="eteam") views.py class UpdateProfileView(SuccessMessageMixin, UpdateView): model = Profile form_class = UpdateProfileForm template_name = 'users/management/update_profile.html' success_message = 'Változtatások mentve' def get_success_url(self): return self.request.META.get('HTTP_REFERER') urls.py ... path('management/update_profile/<pk>/<uuid>', login_required(UpdateProfileView.as_view()), name='UpdateProfile'), ... In the forms I don't using any widget. -
Problems when performing a query set of those leagues that have events filtered by a date timestamps
We have two models where we need to make a filter of those leagues that have games on a given date, this date is a timestamp example =: 1698292800 all this works fine, the problem is that when we get the results of this filter it brings events from other dates including the one that was filtered. Models FootballLeague model contains all soccer leagues. class FootballLeague(UUIDModel, TimeStampedModel): name = models.CharField(_("Name"), max_length=255, db_index=True) country_name = models.CharField( _("Country"), max_length=255, db_index=True, null=True, blank=True ) country_id = models.IntegerField(_("Country ID"), null=True, blank=True) def __str__(self): return self.name class Meta: verbose_name = _("Football League") verbose_name_plural = _("Football Leagues") ordering = ["name"] EventsFootball model contains all games related to a league. class EventsFootball(UUIDModel): event_id = models.CharField(max_length=255) start_time = models.IntegerField(null=True, blank=True) home_score_current = models.CharField(max_length=255, null=True, blank=True) home_score_part_1 = models.CharField(max_length=255, null=True, blank=True) home_score_part_2 = models.CharField(max_length=255, null=True, blank=True) home_images = models.JSONField(null=True, blank=True) away_score_current = models.CharField(max_length=255, null=True, blank=True) away_score_part_1 = models.CharField(max_length=255, null=True, blank=True) away_score_part_2 = models.CharField(max_length=255, null=True, blank=True) info_notice = models.CharField(max_length=255, null=True, blank=True) away_images = models.JSONField(null=True, blank=True) league = models.ForeignKey( FootballLeague, related_name="events", on_delete=models.CASCADE ) start_date = models.DateField(null=True, blank=True) def __str__(self): return f"{self.league.name} - {self.round}" The relationship or query performed so far where the games of the filtered date are brought here everything … -
Can we extend a template in multiple templates?
In Django while making templates, I created a master template where I used 3 template block tags and 2 different html files for extending (using extends template tag) and code for them. only one html code is added to master template, the other one is not added. Can we simultaneously extend a template in multiple templates? I was trying to make 2 files that extends a master template. but only one template's code is being added when I see in 'view source code'. -
NoReverseMatch at / Reverse for 'add_time_slot' with arguments '('',)' not found. 1 pattern(s) tried: ['add_time_slot/(?P<turf_id>[0-9]+)/\\Z']
I getting an error while doing python django project. The error: 'NoReverseMatch at / Reverse for 'add_time_slot' with arguments '('',)' not found. 1 pattern(s) tried: ['add_time_slot/(?P<turf_id>[0-9]+)/\Z']'. Several things i tried but nothing works please help me... view.py def add_time_slot(request, turf_id): turf = Venue.objects.get(pk=turf_id) if request.method == 'POST': form = TimeSlotForm(request.POST) if form.is_valid(): timeslot = form.save(commit=False) timeslot.turf = turf timeslot.save() return redirect('add_time_slot', turf_id=turf_id) else: form = TimeSlotForm() return render(request, 'add_time_slot.html', {'form': form, 'turf': turf}) url.py path('add_time_slot/int:turf_id/', views.add_time_slot, name='add_time_slot'), html Add Time Slots -
Switch to another subdomain in django on a click of a button
I am actually having issues with template link of a button to point to my subdomain which actually if I enter it manually on a browser, it works just fine. I need something like this {% load hosts %} <a href="{% host_url 'homepage' host 'www' %}">Home</a> But it doesn't work if i place the code above on a button. Am I missing anything?. Appreciate the help guys -
connect failed (111: Connection refused) reverse proxy using Nginx
I'm trying to revert ports to 8000 using docker, nginx and django but I get connection refused error. The docker build and compose works fine. Here is my nginx.conf file: worker_processes auto; events { worker_connections 4; } http { upstream backend { # web is the docker-compose.yml backend service server web:8000; } server { listen 80; server_name 127.0.0.1; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } and my docker-compose.yml file: services: db: image: postgres volumes: - ./data/db:/var/lib/postgresql/data environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres web: build: . command: python manage.py runserver 127.0.0.1:8000 volumes: - .:/code ports: - "8000:8000" environment: - POSTGRES_NAME=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres depends_on: - db nginx: image: nginx ports: - 80:80 volumes: - ./nginx/config/nginx.conf:/etc/nginx/nginx.conf depends_on: - web The error I'm getting: `2023/10/28 08:22:33 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: my_pc_ip, server: 127.0.0.1, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "127.0.0.1"` I tried changing the nginx.conf and .yml file but nothing changed -
Free online solutions for testing python frameworks on web
I'm looking for a free online solution to test python frameworks like django and flask. From what I have searched so far, I have not found any that do not involve additional expenses. -
Failed to lock Pipfile.lock
when I am trying to install mysqlclient on my Django project, I am facing this error. since I am a complete beginner on python-django, could someone help me out on solving this issue? ''' (demoproject) chandanm@Chandans-MacBook-Air demoproject % pipenv install mysqlserver Installing mysqlserver... Resolving mysqlserver... Added mysqlserver to Pipfile's [packages] ... ✔ Installation Succeeded Pipfile.lock (e35515) out of date, updating to (8070c0)... Locking [packages] dependencies... Building requirements... Resolving dependencies... ✘ Locking Failed! ⠹ Locking...False CRITICAL:pipenv.patched.pip._internal.resolution.resolvelib.factory:Could not find a version that satisfies the requirement mysqlserver (from versions: none) [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/resolver.py", line 645, in _main [ResolutionFailure]: resolve_packages( [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/resolver.py", line 612, in resolve_packages [ResolutionFailure]: results, resolver = resolve( [ResolutionFailure]: ^^^^^^^^ [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/resolver.py", line 592, in resolve [ResolutionFailure]: return resolve_deps( [ResolutionFailure]: ^^^^^^^^^^^^^ [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 908, in resolve_deps [ResolutionFailure]: results, hashes, internal_resolver = actually_resolve_deps( [ResolutionFailure]: ^^^^^^^^^^^^^^^^^^^^^^ [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 681, in actually_resolve_deps [ResolutionFailure]: resolver.resolve() [ResolutionFailure]: File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 442, in resolve [ResolutionFailure]: raise ResolutionFailure(message=str(e)) [pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies. You can use $ pipenv run pip install <requirement_name> to bypass this mechanism, then run $ pipenv graph to inspect the versions actually installed in the virtualenv. Hint: … -
Getting error': 'Invalid date format. Please provide the date in the format dd/mm/yyyy' working perfectly on ubuntu but show this error on windows
' def subscription_detail(request): user = request.user if request.method == 'POST': try: data = json.loads(request.body) if data and 'subscriptionData' in data: subscription_data = data['subscriptionData'] if subscription_data: try: current_platform = sys.platform if current_platform == "win32" or current_platform == "cygwin": # Windows-based system print("Using Windows system format") print("Payment Date:", subscription_data['paymentDate']) payment_date = datetime.strptime(subscription_data['paymentDate'], '%d/%m/%Y').date() payment_time = datetime.strptime(subscription_data['paymentTime'], '%H:%M:%S').time() elif current_platform == "darwin": # macOS print("Using macOS system format") payment_date = datetime.strptime(subscription_data['paymentDate'], '%m/%d/%Y').date() payment_time = datetime.strptime(subscription_data['paymentTime'], '%H:%M:%S').time() elif current_platform =="linux": # Unix-based system print("Using Unix-based system format") payment_date = datetime.strptime(subscription_data['paymentDate'], '%m/%d/%Y').date() payment_time = datetime.strptime(subscription_data['paymentTime'], '%H:%M:%S').time() except ValueError as e: print("ValueError: ", e) return JsonResponse({'error': 'Invalid date format. Please provide the date in the format dd/mm/yyyy'}, status=400) exam_instance = Exams.objects.get(id=subscription_data['examName']) if subscription_data['subscriptionType'] == "monthlyRadio": expiry_date = payment_date + timedelta(days=30) elif subscription_data['subscriptionType'] == "quarterlyRadio": expiry_date = payment_date + timedelta(days=122) elif subscription_data['subscriptionType'] == "yearlyRadio": expiry_date = payment_date + timedelta(days=365) else: return JsonResponse({'error': 'Invalid subscription type'}, status=400) instances = Subscriptin_details.objects.create( amount=subscription_data['amount'], card_type=subscription_data['payment_method_details']['card']['funding'], payment_date=payment_date, payment_time=payment_time, subscription_type=subscription_data['subscriptionType'], user_name=user, expiry_date=expiry_date, exam_name=exam_instance, ) instances.save() return JsonResponse({'Success': 'Payment successful'}, status=200) else: return JsonResponse({'error': 'Subscription data not found'}, status=400) else: return JsonResponse({'error': 'SubscriptionData key not found'}, status=400) except Exception as e: return JsonResponse({'error': str(e)}, status=500) else: return JsonResponse({'error': 'Invalid request method'}, status=400) ' here … -
Django redirect error unexpected keyword while returning to previews view
I have searched and have not found any answers related to my specific problem. When I submit a form from my index view to an up_load view and try to have the up_load view redirect back to the index view while including the page number as an argument, I get an error, I have tried using a context dictionary and still nothing. url.py from django.urls import path from . import views app_name = 'myApp' urlpatterns = [ path("", views.index, name="index"), path("", views.index, kwargs={'cliente_id': None}, name="index"), path("<int:cliente_id>/", views.index, name="index"), path("<int:cliente_id>/<str:page>", views.index, name="index"), path('up_load/', views.up_load, name='up_load'), ] views.py def index(request, cliente_id=None): paginator = Paginator(client_list, 15) page_number = request.GET.get("page") page = paginator.get_page(page_number) context = {'cliente_id': cliente_id, 'page': page, 'paginator': paginator } return render(request, 'myApp/index.html', context) def up_load(request): if request.method == 'POST': form = ExpeditensForm(request.POST, request.FILES) cliente_id = request.POST.get('cliente_id', '/') page = request.POST.get('page', '/') if form.is_valid(): form.save() return redirect('myApp:index', cliente_id=cliente_id, page=page) else: pass Django returns the following error. Exception Type: TypeError at /Expedientes/4/1 Exception Value: index() got an unexpected keyword argument 'page' The browser shows the following URL: http://127.0.0.1:8000/Expedientes/4/1 When it should be: http://127.0.0.1:8000/Expedientes/4/?page=1 Thank you -
Django ManyToMany creations and cascading deletions
Django ManyToMany creations and cascading deletions Django newbie here. I have looked under several threads and I have not found anything related so I hope you can help me out on this. I am working on a ManyToMany model involving Doctors and Patients, that is, both can have multiple relationships between them. I have the following model definition: class Patient(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) email = models.EmailField(unique=True) (other fields definitions) class Doctor(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) email = models.EmailField(unique=True) (other fields definitions) … patients = models.ManyToManyField(Patient) The doctor is the main user that should be able to visualize all related patients (no problem there). When adding a new patient though, I would like to know how to create the relationship in the app_doctor_patients join table. I’ve read the documentation regarding the Related objects reference (https://docs.djangoproject.com/en/4.2/ref/models/relations/#django.db.models.fields.related.RelatedManager) but I do not know which is the best way to apply these functions. For starters, I visualized the following: def add_new_patient(request, doctor_id=None, curp=None): doctor = Doctor.objects.get(id=doctor_id) try: patient = Patient.objects.get(curp=curp) # Associates Patient 'patient' with Doctor 'doctor'. doctor.patients.add(patient) except Patient.DoesNotExist: # Creates a new patient object, saves it and puts it in the related object set. Returns the newly created … -
How can I create a views.py that allows a registered user to create, amend and delete a appointment?
I am developing a barber booking service using Django/Python. I want to create a view for an authenticated user to create a booking, amend and/or delete their booking. I am a student developer and this particular issue is not covered in the lessons and I am a little overwhelmed by it all, I have done many searches online but have not had any luck with finding anything I am able to work with. So far I have managed to create the models.py code but have hit a brick wall when it comes to creating the views.py, any help or advice is greatly appreciated! My current models.py file from django.db import models from datetime import datetime from django.contrib.auth.models import User SERVICE_CHOICES = ( ("Classic Cut", "Classic cut"), ("Cut & Beard", "Cut & Beard"), ("Skin Fade", "Skin Fade"), ("Skin & Beard", "Skin & Beard"), ("Buzz Cut", "Buzz Cut"), ) TIME_CHOICES = ( ("9 AM", "9 AM"), ("10 AM", "10 AM"), ("11 AM", "11 AM"), ("1 PM", "1 PM"), ("2 PM", "2 PM"), ("3 PM", "3 PM"), ("4 PM", "4 PM"), ("5 PM", "5 PM"), ) class Appointment(models.Model): user = models.ForeignKey( User, on_delete=models.CASCADE, null=True, blank=True) service = models.CharField( max_length=50, choices=SERVICE_CHOICES, default="Classic Cut") day … -
Weird error produced when quering sqlite databased using a model
I'm getting a very weird decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>] when trying to query a table in my Django application. I suspect it may be related to the virtual environment. This is the view. It is an endpoint that will receive some JSON data (at the moment I'm using Postman to send data to it). def handleRawMarketData(request): if request.method=='POST': data = json.loads(request.body) print(data) for item in data: new_data = rawMarketData(duration=item['duration'], is_buy_order=item['is_buy_order'], issued = item['issued'], location_id = item['location_id'], min_volume = item['min_volume'], order_id = item['order_id'], price = item['price'], range = item['range'], typeID = InvTypes.objects.get(typeID = item['type_id']), volume_remain = item['volume_remain'], volume_total = item['volume_total']) new_data.save() return JsonResponse({'message': 'Data saved successfully'}) return JsonResponse({'message': 'Failed'}) This is the data being sent in the body of the POST request by Postman: [{"duration":90,"is_buy_order":true,"issued":"2023-10-03T10:21:32Z","location_id":1038457641673,"min_volume":1,"order_id":6512967679,"price":17720000,"range":"region","type_id":19255,"volume_remain":2,"volume_total":3},{"duration":90,"is_buy_order":true,"issued":"2023-10-17T20:31:19Z","location_id":1038457641673,"min_volume":1,"order_id":6616121350,"price":500.2,"range":"station","type_id":24509,"volume_remain":198250,"volume_total":200000}] These are the two models being used. class InvTypes(models.Model): typeID = models.IntegerField(db_column='typeID', primary_key=True) groupid = models.IntegerField(db_column='groupID', blank=True, null=True) typename = models.CharField(db_column='typeName', blank=True, null=True, max_length=10000) description = models.TextField(blank=True, null=True) mass = models.IntegerField(blank=True, null=True) volume = models.IntegerField(blank=True, null=True) capacity = models.IntegerField(blank=True, null=True) portionsize = models.IntegerField(db_column='portionSize', blank=True, null=True) raceid = models.IntegerField(db_column='raceID', blank=True, null=True) baseprice = models.DecimalField(db_column='basePrice', max_digits=10, decimal_places=5, blank=True, null=True) published = models.BooleanField(blank=True, null=True) marketgroupid = models.IntegerField(db_column='marketGroupID', blank=True, null=True) iconid = models.IntegerField(db_column='iconID', blank=True, null=True) soundid = models.IntegerField(db_column='soundID', blank=True, null=True) graphicid … -
Authorize.net Unsettled Transaction List returning nothing, No error, No response
I have copy pasted this code from Authorize.net no errors are raised by this code, and the Authorize.net response is empty. There are no entries in the transaction list, and there are no errors either. Just empty response This my code:- def get_unsettled_transaction_list(location, limit=20, offset=1): """get unsettled transaction list""" locationAuth = AuthorizeDotNetServices._get_location_auth(location) # set sorting parameters sorting = apicontractsv1.TransactionListSorting() sorting.orderBy = apicontractsv1.TransactionListOrderFieldEnum.id sorting.orderDescending = True # set paging and offset parameters paging = apicontractsv1.Paging() # Paging limit can be up to 1000 for this request paging.limit = limit paging.offset = offset transactionrequest = apicontractsv1.getUnsettledTransactionListRequest() transactionrequest.merchantAuthentication = locationAuth transactionrequest.refId = "Sample" transactionrequest.sorting = sorting transactionrequest.paging = paging unsettledTransactionListController = getUnsettledTransactionListController(transactionrequest) unsettledTransactionListController.execute() # Work on the response response = unsettledTransactionListController.getresponse() -
Unable to log user in
This is my code: from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from django.contrib.auth import authenticate, login @api_view(["POST"]) def user_login_api_view(request): username = request.data.get("username") password = request.data.get("password") user = authenticate(username=username, password=password) print(user, password, username) if user is not None: login(request, user) return Response(status=status.HTTP_200_OK) else: return Response(status=status.HTTP_401_UNAUTHORIZED) This is my request body for login: { "username": "testuser111@test.test", "password": "testpassword111" } Here's the print result: None testpassword111 testuser111@test.test I register a user like so: from django.contrib.auth.models import User from ..serializers import UserSerializer class UserCreateApiView(generics.CreateAPIView): def get_queryset(self): return User.objects.create_user(self.request.data) serializer_class = UserSerializer with this request body: { "username": "testuser111@test.test", "password": "testpassword111" } User serializer from rest_framework import serializers from django.contrib.auth.models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = "__all__" password = serializers.CharField(write_only=True) And in response I get 401. How do I log a user in properly? -
Django Rest Framework SimpleJWT - Removing a variable refrencing 'request.body' Causes 'RawPostDataException' Error
I have a Django 4.2.6 project using Python 3.10 and the rest_framework_simplejwt library. I've implemented a signin function, and it works fine when I include the line body = request.body, even though I'm not using body anywhere in the function. However, when I remove this line, it throws the following error: “RawPostDataException at /auth/signin/ - You cannot access the body after reading from the request's data stream.” I've tried to understand why this is happening, but I couldn't figure it out even after reading the docs. Can someone help me understand why this line is needed and if there's a cleaner or better way to write this function? Here's my code: @api_view(['POST']) def signin(request): body = request.body token_view = jwt_views.TokenObtainPairView.as_view() token_response = token_view(request._request) if token_response.status_code == status.HTTP_200_OK: data = request.data user = User.objects.filter(username=data['username']).first() data = { "access_token": str(token_response.data['access']), "refresh_token": str(token_response.data['refresh']), "user_access": { "is_staff": user.is_staff, "is_admin": user.is_superuser } } return Response(data, status=status.HTTP_200_OK) return token_response