Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
FilePathField adds backslash to the end of path django
This is my model : from django.db import models from project.settings import BASE_DIR class Restaurant(models.Model): logo_img = models.FilePathField(path=BASE_DIR, recursive=True, null=True) when I send a request, the response is as follows : {'logo_img': [ErrorDetail(string='\"/media/tmp/72a68b59ad0047edb4cd275725bff229.jpg\" is not a valid path choice.', code='invalid_choice')]} This is my request body : { "logo_img" : "/media/tmp/72a68b59ad0047edb4cd275725bff229.jpg" } This file path is correct & it exists on server. Why it adds backslash to the end of path? -
Помогите придумать тему для дипломной работы
Я на 4 курсе и паралельно работаю веб. девом. Мой стек: Python, Django, Django REST, FastApi, Flask, JavaScript, XML / JSON, SQL, MySQL, PostgreSQL. Помогите придумать тему для курсача, это должен быть или веб сайтик или телеграм бот с веб. админкой. А то у меня уже ноль идей =( -
NameError: Undefined
I am working on a django project where I define a loop variable in an html file but it is not recognizing the variable. Please look at the code and tell me if there is anything wrong. % for category in categories: <div class="mobile-nav-item dropdown-item dropdown-nav-item toggle-category-sub-dropdown" role="button" aria-label=${_("Options Menu")} aria-expanded="false" tabindex="0" aria-controls="${category.replace(' ','_')}"> <a role="menuitem">${_(category)}</a> <div style="left:100%;top: -1px !important;width: max-content" class="dropdown-category-sub-menu hidden" aria-label=${_("More Options")} role="menu" id="${category.replace(' ','_')}" tabindex="-1"> % for subject in subjectLists: %if category == subject['category']: <div class="mobile-nav-item dropdown-sub-item dropdown-nav-item"><a href="${reverse('about_course', args=[text_type(subject['id'])])}" role="menuitem">${_(subject['name'])}</a></div> %endif % endfor </div> </div> % endfor -
html form elements in for loop with a single submit button in django
if put a submit button below form closing tag it shows the multiple buttons all over the table but what i want it in one submit DATA {% block content %} id studentname Hallticket Number ExamType Medium Barcode OldBarcode Attendance {% for i in students %} {{ i.id }} {{ i.sname }} {{ i.htno }} {{ i.ExamType }} {{ i.medium }} {{ i.Barcode }} {{ i.OldBarcode }} Choose... Present Absent MallPractice {% endfor %} {% endblock %} -
Django Filters not querying data
I'm trying to filter API responses through a web search. After typing a search query it doesn't filter the result. I'm also using pagination. How to solve this do I need to make changes in my filter or View. search query http://127.0.0.1:8000/course-api/subjectlist/?search="ICT"/ after giving this search query still it returns all of the elements through the response. Subject model class Subject(models.Model): def upload_location(instance, filename): return "subject_images/%s/%s" % (instance.subject_name, filename) subject_name = models.CharField(max_length=200, null=True) subject_cover = models.ImageField(null=True, blank=True, upload_to=upload_location,default="subject_images/default.png") description = models.CharField(max_length=500, null=True, blank=True) author = models.ForeignKey(TeacherProfile,on_delete=models.CASCADE,null=True,default=None) subject_type = models.CharField(max_length=100, null=True, blank=True) class_type = models.CharField(max_length=10, null=True, blank=True) short_description = models.CharField(max_length=300,blank=True,null=True) created_at = models.DateTimeField(default=now) filters.py import django_filters from ..models import Subject class SubjectFilter(django_filters.FilterSet): class Meta: model = Subject fields = ['subject_name'] Views.py @api_view(['GET']) def SubjectList(request): paginator = PageNumberPagination() paginator.page_size=5 subjects =SubjectFilter ( request.GET, queryset= Subject.objects.all()) result_page = paginator.paginate_queryset(subjects.queryset,request) serializer = SubjectViewSerializer(result_page,many=True) return paginator.get_paginated_response(serializer.data) -
Checking if an object name exists in UpdateView is giving an error if i want to use the same name
I'm looking for a trick to use UpdateView and update a name of an object, but i want to raise a formerror if one of the other object has the same name. My problem is if i want to Update only f.e point of my object but at the same time I want to use the same name. For example: Object: name = 123 , point = 1 OtherObj: name = 124 , point = 1 If i want to update name to '124' raise a form error, and that's correct. But if i want to update only point, so i want to use the same name, raise a form error. I wrote in my forms.py, this: class CardUpdateForm(forms.ModelForm): card_title = forms.CharField(label="Titolo Card", widget=forms.TextInput(attrs={'class': 'form-control'})) description = forms.CharField(label="Descrizione card", widget=forms.TextInput(attrs={'class': 'form-control'})) # column_id = forms.CharField(label="Nome colonna", widget=forms.TextInput(attrs={'class': 'form-control'})) expiration_date = forms.DateField(label="Data di scadenza", widget=forms.DateInput(attrs={'class': 'form-control'})) class Meta: model = Card fields = [ 'card_title', 'description', 'expiration_date', 'column', 'story_points', ] def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) super(CardUpdateForm, self).__init__(*args, **kwargs) def clean(self, *args, **kwargs): card_title = self.cleaned_data.get('card_title') description = self.cleaned_data.get('description') card_title_qs = Card.object.filter(card_title=card_title) if card_title_qs.exists : raise forms.ValidationError('Nome della Card già utilizzato. Per favore inseriscine un altro.') -
Accessing input field values from same form into different apps in django
I am a django framework and Mpesa daraja api beginner. I want to make the amount and phone number to be dynamic in that the values of the same should be obtained from input fields... please help -
SMTPAuthenticationError on Heroku
I am trying to request a reset password from a system deployed on heroku but i get this error. SMTPAuthenticationError at /password-reset/ (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbs\n5.7.14 i1cE5v2I-3UUFLl6jQMnBfbcvZuRiGo_q9k1T5h2XgMGxtKYIJ0sIPE9Jr6zW1X78xQM3\n5.7.14 Py7mrOXSPkPG01upxjbZRi68aLrKIbvG_4uHrli9l7ZVmFnr8CxRNb9JUDGVcm8M>\n5.7.14 Please log in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 k188sm1479373qkd.98 - gsmtp') I have set all these settings and they seem to be okay but i still get the same error. Kindly help EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = os.environ.get('EMAIL_USER') EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS') -
Looking for examples in django tests for a website
For a big scale website..i am looking an example on how you can create tests in django for different type of users admin,guest,client,etc.Does anyone have a link or a youtube video to suggest? I am looking for sth more complicated than the simple test examples in django website. Any link would be helpful! -
Can I run redis servers on a windows server?
I have designed an app in django using django channels with redis servers for websocket communication, but I have to host it on a windows server. Can I and how do I run redis servers for that application. Is there any alternative to this? -
Django makemessages on third-party iframe?
I'm using a third-party library, and I'd like to translate the text on some of the iframes provided by the library on my website. I can't use makemessages to generate the correct phrases in the .po files, as the iframe code is not part of my codebase. I could manually add the translations to the .po files but then the next time I run makemessages these phrases will be removed because i18n will not find them within the codebase. Is there a way to use i18n on the words of a third-party iframe without the translations being removed every time makemessages is run? -
django.urls.exceptions.NoReverseMatch: Reverse for 'core_user_changelist'
I get this error when I run docker-compose run app sh -c "python manage.py test && flake8" git hub code: https://github.com/OsamaDaghestani/recipe-app-api.git ERROR: test_create_user_page (core.tests.test_admin.AdminSiteTests) Test that the create user page works Traceback (most recent call last): File "/app/core/tests/test_admin.py", line 39, in test_create_user_page url = reverse('admin:core_user_add') File "/usr/local/lib/python3.7/site-packages/django/urls/base.py", line 87, in reverse return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 685, in _reverse_with_prefix raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Reverse for 'core_user_add' not found. 'core_user_add' is not a valid view function or pattern name. ====================================================================== ERROR: test_user_change_page (core.tests.test_admin.AdminSiteTests) Test that the user edit page works ---------------------------------------------------------------------- Traceback (most recent call last): File "/app/core/tests/test_admin.py", line 32, in test_user_change_page url = reverse('admin:core_user_change', args=[self.user.id]) File "/usr/local/lib/python3.7/site-packages/django/urls/base.py", line 87, in reverse return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 685, in _reverse_with_prefix raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Reverse for 'core_user_change' not found. 'core_user_change' is not a valid view function or pattern name. ====================================================================== ERROR: test_users_listed (core.tests.test_admin.AdminSiteTests) Test that users are listed on user page ---------------------------------------------------------------------- Traceback (most recent call last): File "/app/core/tests/test_admin.py", line 24, in test_users_listed url = reverse('admin:core_user_changelist') File "/usr/local/lib/python3.7/site-packages/django/urls/base.py", line 87, in reverse return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 685, in _reverse_with_prefix raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Reverse for 'core_user_changelist' not found. 'core_user_changelist' is not a valid view … -
Error when trying to serialize multiple followers:Got AttributeError when attempting to get a value for field `email` on serializer `UserSerializer`
I am trying to show the followers in UserSerializer,as a user instance.Almost the same method i used in article model works,but in user model it gives me problem.Below i can explain it better with my codes: Models.py class User(AbstractUser,PermissionsMixin): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.CharField(max_length=255,unique=True) username =models.CharField(max_length=80,unique=True,default='SOME STRING') class Article(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='articles') caption = models.CharField(max_length=250) class FollowUserModel(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='followers') profile = models.ForeignKey(User,on_delete=models.CASCADE,null=True) created = models.DateTimeField(auto_now=True) Serializers.py class UserSerializer(serializers.ModelSerializer): followers_set = serializers.SerializerMethodField() def get_followers_set(self, user): return UserSerializer(user.followers.all(), source='followers', required=False,read_only=True,many=True).data class Meta: model = User fields = ('id','email','username','followers_set') class ArticleViewSerializer(serializers.ModelSerializer): author = UserSerializer(required=False,read_only=True) class Meta: model = Article fields = ('id','author') def create(self, validated_data): return Article.objects.create(**validated_data) class FollowSerializer(serializers.ModelSerializer): author = UserSerializer(required=False) profile = UserSerializer(required=False) class Meta: model = FollowUserModel fields = ("author","profile") Now the author works as intended,it gives the full user instance.But in followers_set i get this error: Got AttributeError when attempting to get a value for field `email` on serializer `UserSerializer`. The serializer field might be named incorrectly and not match any attribute or key on the `FollowUserModel` instance. Original exception text was: 'FollowUserModel' object has no attribute 'email'. I don't get it,like i defined everything … -
Save a unique order id for each company in django
I would like to have a unique id_order per company, and if already exist, i cannot save the order or form is not valid. In my example, each company save orders, Company A can save id_order 1 id_order 2 id_order 3 ... Company B can save id_order 10 id_order 20 id_order 30... what i want now is that company A cannot save two times id_order 3 or company B cannot save two times id_order 20. class Company(models.Model): name = models.CharField(max_length=240) last_order = models.DecimalField(max_digits=20, decimal_places=0) class Order(models.Model): company = models.ForeignKey('Company', on_delete=models.CASCADE) id_order = models.DecimalField(max_digits=20, decimal_places=0) def save(self, *args, **kwargs): created = not self.pk super().save(*args, **kwargs) if created: Company.objects \ .filter(pk=self.company_id) \ .update(last_order=self.id_order) Forms: class OrderForm(ModelForm): class Meta: model = Order def __init__(self, company , *args, **kwargs): super(OrderForm, self).__init__(*args, **kwargs) self.fields['company'] = forms.ModelChoiceField(queryset=Company.objects.filter(name=company), initial = company) try: code = company.last_order + 1 self.fields["id_order"].initial = code except Exception as e: print(e) -
Django - how to obtain the latest related model in an efficent way I can iterate on the template?
Let's say I have two related models, one of the two with a datetime field. (Author & Book with a pub_date). I want to display a list of authors and the latest book each of them has written. I made a method on the Author model: def get_latest_book(self): return self.books.all().latest('pub_date') That is working, but it's very inefficent when it comes to be rendered on a template: views.py: class AuthorListView(ListView): model = Author template_name = 'author_list.html' def get_queryset(self): return self.model.objects.filter(owner=self.request.user).order_by('name').prefetch_related('books') author_list.html: ... {% for author in author_list %} Name: {{author.name}} - Latest publication: {{author.get_latest_book}} {% endfor %} ... This is generating a large number of queries like: SELECT ••• FROM `app_book` WHERE `app_book`.`author_id` = 374 ORDER BY `app_book`.`pub_date` DESC LIMIT 1 36 similar queries. for each Author I have in the database! This results in huge loading times for the book list. How can I print on the template a list of Authors with their latest book in an efficient way? -
mathematical calculation in django
i am new to django. i am working on a project e-shop, seller input the item and have right to offer discount as well through database. models field include discount_offered_percentage i want to print MRP, Discount percentage, final price after discount. how can i calculate the final price? I don't want to store the value in database but want to calculate and print it on the html page directly. as I am printing the available items in database to html page. how can I fetch the value of discount_offered_percentage column for each iteration on view.py? thanks in advance -
Can't add new fields to UserCreationForm in Django
I want to add some fields to my forms.py like below: from django.forms import ModelForm from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm class CreatUserForm(UserCreationForm): first_name = forms.CharField() last_name = forms.CharField() email = forms.EmailField() class Meta: model = User fields = ['first_name', 'last_name', 'username', 'email', 'password1' ,'password2'] And also I created a register page: from django.shortcuts import render, redirect from django.http import HttpResponse, HttpRequest from django.forms import inlineformset_factory from urllib.parse import urlparse # from django.contrib.auth.forms import UserCreationForm from .models import * from .forms import CreatUserForm def registerPage(request): form = CreatUserForm() if request.method == 'POST': form = CreatUserForm(request.POST) if form.is_valid(): form.save() context = {'form': form} return render(request, 'main/page-register.html', context) So when I remove fields first_name last_name and email I can register as a user in page-register.html but when I use these fields I can't register new user. -
How to get the number of files from request.FILES.getlist('image')
and I'm trying to upload files in the app that I'm making. I have an input field (ImageField) that accepts multiple images to be uploaded once submitted. I do this via ajax, and so I want to return some sort of json object that has total count of images being tried to upload and number of images being actually uploaded. def post_update(request): save_status = {'update_save': False, 'image_count': 0, 'image_save': 0} if request.method == 'POST': update = UpdateForm(request.POST) if update.is_valid(): event = Event.objects.get(pk=request.POST['event_id']) update_form = update.save(False) update_form.update_by = request.user update_form.event = event update_form.save() save_status['update_save'] = True images = ImageForm(request.POST, request.FILES) files = request.FILES.getlist('image_path') save_status['image_count'] = request.FILES.count if images.is_valid(): for f in files: photo = Image( image_path=f, update_ref=update_form, image_title=images.cleaned_data.get('image_title')) photo.save() save_status['image_save'] += 1 I tried request.FILES.count and request.FILES.length in trying to get the count, but to no avail and keeps having an error. My question is basically how can i get the number of files in the request.FILES? -
Using a list of objects in Django Template
This is my first time to ask a question on here so apologies if it isn't structured very well. Basically what I have is a Model called Product, which at the minute has 7 products. I am looking to pull out 3 random products from this Model and store them in a list, which I then want to access from a template to show the 3 objects which are now in the list. My attempt at getting 3 random objects from the db: ## Finding 3 random products to show all_product_list = list(Product.objects.values_list('name', 'price', 'image')) checkout_products = list() counter = 3 num_products = len(all_product_list) while counter!= 0: random_prod = random.randint(0, num_products - 1) checkout_products.append(all_product_list[random_prod]) counter -= 1 Then in my template I am trying to access as follows: {% for checkout_prod in checkout_products %} <div class="col text-light"> {{ checkout_prod.price }} </div> {% endfor %} I am also rendering the list at the end of my function as follows : return render(request, 'cart.html', {'cart_items':cart_items, 'total':total, 'counter':counter, 'data_key': data_key, 'stripe_total':stripe_total, 'description':description, 'before_discount':before_discount, 'difference': difference, 'checkout_products': checkout_products,}) I am not getting any error, but there is nothing at all showing on the page, any help with this would be greatly appreciated. Thank You! -
django authenticate not working with user created by api , only work with user created by admin
i'm trying to generated token after login using drf. i'm using emailbackend for login with email and password but its not working with user created by api and with user created by admin its working backends.py: class EmailBackend(ModelBackend): def authenticate(self, request, username=None, password=None, **kwargs): UserModel = get_user_model() try: user = UserModel.objects.get(email=username) except UserModel.DoesNotExist: return None else: if user.check_password(password): return user return None Token serializers: class AuthCustomTokenSerializer(serializers.Serializer): ''' Changing Token auth to use email instead username ''' email = serializers.EmailField(label=_("Email")) password = serializers.CharField( label=_("Password",), style={'input_type': 'password'}, trim_whitespace=False ) def validate(self, attrs): email = attrs.get('email') password = attrs.get('password') print(email, password) if email and password: user = authenticate(username=email, password=password) print("this is user", user) # The authenticate call simply returns None for is_active=False # users. (Assuming the default ModelBackend authentication # backend.) if not user: msg = _('Unable to log in with provided credentials.') raise serializers.ValidationError(msg, code='authorization') else: msg = _('Must include "username" and "password".') raise serializers.ValidationError(msg, code='authorization') attrs['user'] = user return attrs login view: @csrf_exempt @api_view(["POST"]) @permission_classes((AllowAny,)) def login(request): serializer = AuthCustomTokenSerializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] token, _ = Token.objects.get_or_create(user=user) return Response({token: token.key}, status=status.HTTP_200_OK) -
Python, Django: list from .select_related("...")
Good day to everyone, I wonder, if there's a direct way to convert a query like this... query_db = Example.objects.all() selected_db = Example.select_related("...") print(type(selected_db)) ... <class 'django.db.models.query.QuerySet'> ...into a list? I know there are ways to do it afterwards, but are there functions like for example... ...values_list("...", flat=True) ...to solve this directly in the query? Thanks for all your help! -
django-datatable-view==0.9.0 Django 3.1.3: ImportError: cannot import name 'get_datatable_structure'
I am using the latest package django-datatable-view 0.9.0 in django 3.1.3 (upgrading from django 1.8.6) When a I run manage.py run server I get the following error: File "/mcvitty/mcvitty/customers/views.py", line 14, in <module> from datatableview.utils import get_datatable_structure ImportError: cannot import name 'get_datatable_structure' Upgrading the package is not an option as I am already using the latest package. I have searched datatableview get_datatable_structure but I cannot find it. What can I do to fix the error? Thank you for your help -
Django: send SESSION value to an extendable html template
One the one hand i have an navbar.html template that can be extended by several other html templates. On the other hand in my views i have a login system and when a user logs in im creating a session value with user's name. i want to send this session value to the navbar html but without rendering this template. How could i do this? login in view.py name = form.cleaned_data.get('name') password = form.cleaned_data.get('password') user = Users.objects.filter(name=name, password=password) if user.count() > 0: request.session['user'] = user.name return redirect("store/") else: messages.info(request, 'Invalid credentials') return redirect("/login/") the return redirect("store/")redirects to the store.html that extends the navbar.html. I want to send request.session['user'] to the navbar.html -
Django form.is_valid returns false when a FileField is set to required
So I'm trying to make a form in Django with a FileField. My forms.py looks like this: I want the FileField to be a required field. When forms.FileField(required = True) in forms.py, form.is_valid() returns false: When forms.FileField(required=False) in forms.py, form.is_valid() returns true: When I submit the form with forms.FileField(required = True) my print(form.errors) states: "This field is required" even though I do add a file. I tried different file formats to make sure the problem didn't just occur with the image I was using for testing. What am I missing? -
Dynamic Email Backend in Django
I would like to let my users decide their email backend on their own. That is why I have created the email relevant keys (host, port, username...) and now I try to work this backend into my Django project. My first attempt was to extend the default EmailBackend by my custom "UserBackend" which overrides the __init__ function like this: class UserBackend(EmailBackend): def __init__(self, user_id, host=None, port=None, username=None ...): user = User.objects.get(id=user_id) super().init(host=user.email_host, port=user.email_port ...) As this method is called (I tried to send_mail from the shell) it gets no user_id. How can I approach this differently or how would I extend my attempts to do this. I don't think it is good to essentially rewrite Djangos send_mail function (...) , as they are there and generic enough to fit my needs.