Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django Elastic APM Trace logs message missing
I have Django-elastic APM setup, that's sends traces and logs to elk stack. Its actually works, but not as I need. I get trace, I get metadata, even logs received (2nd pic) But, problem is, I don't get any messages in logs section and I didn't find how to customize fields. But! When I search directly in logs, I see following: Message exist Finally, when I search it discover section, I can see even more info. Fields, I actually need. QUESTION So, there is my questions. Is it possible to add at least message info to transaction logs (first pic), Is it possible to at least add custom fields to logs section (2nd pic) Also, is there a way to make logs at least clickable? (Also 2nd pic, I mean its just plain text I have to go to discover and use this info like ctrl+c ctrl+v) Finally, why logs are marked as Errors, if its just a logs, and used like logs? I tried to set different levels as debug, or info, as u see in 2nd screen, but it still comes like error and it goes in apm-7.14-error* index. Here's my logging settings: LOGGING = { 'version': 1, … -
Pillow is not installed after removing .temp-builds
The error ERRORS: app_1 | core.Page.image: (fields.E210) Cannot use ImageField because Pillow is not installed. It seems that Pillow is detected as not installed in my docker container if I delete the .temp-builds after installing requirements.txt. I say this because if I remove the 'apk del .tmp-deps' the error went away. However, I want to remove the .tmp-builds because I learn it's best practice to make the docker container as lean as possible. Dockerfile RUN python -m venv /py && \ /py/bin/pip install --upgrade pip && \ apk add --update --no-cache postgresql-client && \ apk add --update --no-cache --virtual .tmp-deps \ build-base postgresql-dev musl-dev linux-headers \ python3-dev zlib-dev jpeg-dev gcc musl-dev && \ /py/bin/pip install -r /requirements.txt && \ apk del .tmp-deps requirements.txt django>=3.2.3,<3.3 psycopg2>=2.8.6,<2.9 uWSGI>=2.0.19.1,<2.1 djangorestframework >=3.12.4, <3.20.0 Pillow >= 8.4.0, <8.5.0 Any pointer would be greatly appreaciated. -
Elastic Beanstalk Linux 2 Cron Job running but not executing
I have put my configuration files down to as simple of an example as I can think of, but I still can't get the cron to execute. This is a django project, and though it looks like the crons are trying to run, they are not actually executing. .ebextensions/cron-log.config "/etc/cron.d/test_cron": mode: "000644" owner: root group: root content: | */1 * * * * root . /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1 commands: rm_old_cron: command: "rm -fr /etc/cron.d/*.bak" ignoreErrors: true when downloading the logs from aws, test_log.log does not exist in the cron file returned in the logs, it shows: Oct 29 09:03:01 ip-172-31-8-91 CROND[10212]: (root) CMD (. /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1) I have tried many variations of this including having the command that is ran make changes in our database, but it never seems to actually execute. -
error during deploying django project to heruku
I am trying to deplow a django project to heroku but i am getting this error. ERROR: Command errored out with exit status 1: /app/.heroku/python/bin/python /app/.heroku/python/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp5mrz1adn Check the logs for full command output. ! Push rejected, failed to compile Python app. ! Push failed This is the entire log ctivity Feed Build LogID 314cb820-4652-417b-9486-61d629e4a6a9 -----> Building on the Heroku-20 stack -----> Using buildpack: heroku/python -----> Python app detected -----> Using Python version specified in runtime.txt -----> Installing python-3.8.12 -----> Installing pip 20.2.4, setuptools 57.5.0 and wheel 0.37.0 -----> Installing SQLite3 -----> Installing requirements with pip Collecting alembic==1.6.5 Downloading alembic-1.6.5-py2.py3-none-any.whl (164 kB) Collecting asgiref==3.3.4 Downloading asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting Babel==2.9.1 Downloading Babel-2.9.1-py2.py3-none-any.whl (8.8 MB) Collecting bcrypt==3.2.0 Downloading bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl (63 kB) Collecting bidict==0.21.2 Downloading bidict-0.21.2-py2.py3-none-any.whl (37 kB) Collecting blinker==1.4 Downloading blinker-1.4.tar.gz (111 kB) Collecting Brotli==1.0.9 Downloading Brotli-1.0.9-cp38-cp38-manylinux1_x86_64.whl (357 kB) Collecting cffi==1.14.6 Downloading cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl (411 kB) Collecting cheroot==8.5.2 Downloading cheroot-8.5.2-py2.py3-none-any.whl (97 kB) Collecting click==7.1.2 Downloading click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting cryptography==3.4.7 Downloading cryptography-3.4.7-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB) Collecting Django==3.2.8 Downloading Django-3.2.8-py3-none-any.whl (7.9 MB) Collecting django-ckeditor==6.1.0 Downloading django_ckeditor-6.1.0-py2.py3-none-any.whl (2.4 MB) Collecting django-filter==2.4.0 Downloading django_filter-2.4.0-py3-none-any.whl (73 kB) Collecting django-js-asset==1.2.2 Downloading django_js_asset-1.2.2-py2.py3-none-any.whl (5.8 kB) Collecting django-multiselectfield==0.1.12 Downloading django_multiselectfield-0.1.12-py3-none-any.whl (15 kB) Collecting dnspython==1.16.0 Downloading dnspython-1.16.0-py2.py3-none-any.whl (188 kB) Collecting … -
ModuleNotFoundError: No module named '_tkinter' Heroku
I am trying to deploy a webapp using Heroku and it get deployed but it gives internal server error when I try to open it. The complete log as from heroku logs -t is as follows: 2021-10-29T09:03:55.451439+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/exception.py", line 152, in handle_uncaught_exception 2021-10-29T09:03:55.451439+00:00 app[web.1]: callback = resolver.resolve_error_handler(500) 2021-10-29T09:03:55.451442+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/resolvers.py", line 611, in resolve_error_handler 2021-10-29T09:03:55.451442+00:00 app[web.1]: callback = getattr(self.urlconf_module, 'handler%s' % view_type, None) 2021-10-29T09:03:55.451442+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/utils/functional.py", line 48, in __get__ 2021-10-29T09:03:55.451443+00:00 app[web.1]: res = instance.__dict__[self.name] = self.func(instance) 2021-10-29T09:03:55.451443+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/resolvers.py", line 591, in urlconf_module 2021-10-29T09:03:55.451443+00:00 app[web.1]: return import_module(self.urlconf_name) 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module 2021-10-29T09:03:55.451444+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level) 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 783, in exec_module 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/server/urls.py", line 7, in <module> 2021-10-29T09:03:55.451445+00:00 app[web.1]: path('apis/',include('apis.urls',namespace='apis')), 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/conf.py", line 34, in include 2021-10-29T09:03:55.451445+00:00 app[web.1]: urlconf_module = import_module(urlconf_module) 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module 2021-10-29T09:03:55.451446+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)2021-10-29T09:03:55.451446+00:00 app[web.1]: … -
django outlook email configuration godday SMTPAuthenticationError
can someone tell me how can i do the outlook SMTP configuration in Django setting.py because i receive the error: SMTPAuthenticationError at /reset_password/ (535, b'5.7.3 Authentication unsuccessful [KL1PR0401CA0022.apcprd04.prod.outlook.com]') # SMTP Configuration (Godaddy) #https://blog.csdn.net/weixin_42236288/article/details/110079480 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_USE_SSL = False EMAIL_HOST = 'smtp-mail.outlook.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'my email' EMAIL_HOST_PASSWORD = 'my password' EMAIL_FROM = 'admin@askjtmk.com' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER -
ValueError: I/O operation on closed file in Django
I need help in solving this. The "read" method on the doc object shows this error: ValueError: I/O operation on closed file. Please, how do it solve this def send_comment_mail_notification(request, space, target_email): message = request.POST.get('description', '') subject = request.POST.get('subject', '') from_mail = space.email to = target_email msg = EmailMessage(subject, message, from_mail, [to],) doc = request.FILES['document'] print(doc.read()) msg.attach(doc.name, doc.read(), doc.content_type) msg.content_subtype = "html" msg.send() class CommentViewSet(BaseViewSet): permission_classes = (BelongToSpace, ) serializer_class = serializers.CommentSerializer parser_classes = (MultiPartParser, FormParser, FileUploadParser) queryset = models.Comment.objects.all() def callback(self, **kwargs): return send_comment_mail_notification(self.request, self.space, "aa@gmail.com") -
Register SQL-table in Django admin
If I have a PostgresDB that contains both Django models and other SQL tables, is it possible to register these other SQL tables in the Django admin panel? More details about the setup: I have a docker-compose setup where Django is running in one container, a Postgres DB in another, and a slack-app in a third container. Django is connected to the DB and the models are registered in the admin panel. This works as intended. The slack-app is also connected to the same DB and has some tables there that are not Django-models. I would like to also access these through the Django admin panel in order to have everything in one place. Is this possible? -
Django Forms : Nested forms for customed input
I'm trying to display possible results from my database using forms. My models.py looks like that : CHOICE_DISPLAY = ( ('select','select'), ('char','char'), ('radio','radio'), ('int','int'), ('float','float'), ('date','date'), ) class Custom_information(models.Model): name = models.CharField(default="",max_length=200) reference = models.CharField(default="",max_length=200) type_display = models.CharField( choices = CHOICE_DISPLAY , blank=True, null=True,max_length=200 ) class Meta: ordering = ['name'] def __str__(self): return self.name class Radio_custom_choice(models.Model): name = models.CharField(default="",max_length=200) custom_choice = models.ForeignKey(Custom_choice,on_delete=models.CASCADE) class Meta: ordering = ['custom_choice__name'] def __str__(self): return self.name class Custom_choice_company(models.Model): result = models.CharField(default="", max_length=200) custom_choice = models.ForeignKey(custom_choice, blank=True, null=True, on_delete=models.CASCADE) compagny = models.ForeignKey(Company,on_delete=models.CASCADE) class Meta: ordering = ['custom_choice__name'] def __str__(self): return str(self.id) The 'Custom_choice' table as an display type. I want to create a form of 'Custom_choice_company' which will enable me to display every element and get the result of them. I want my html to look like that depending on what kind of displaying my custom_choice object is: <label>"My custom choice name"</label> {% if "my cutom choice type" == "char" %} <input type="my cutom choice type" > {% else if "my cutom choice type" == "radio" %} {% for element in "my radio_custom_choice linked to cutom_choice" %} <input type="radio"> {% endfor %} {% endif %} ``` How can I manage to do that ? Thanks in … -
Celery beat: Change to individual timezone tasks causing validation error "Invalid timezone"
celery --version 5.1.2 (sun-harmonics) django --version 3.2.8 I have a celery schedule that has four tasks that run in different timezones. I am using nowfun for setting the timezones and have set CELERY_ENABLE_UTC = False in settings.py. I followed the top response on this SO post: Celery beat - different time zone per task Note that I made this change this morning - I was running a previous version of the code without these settings. Currently, I am saving the celery results to CELERY_RESULT_BACKEND = 'django-db'. Since implementing the change that allows for different tasks to be run according to different timezones I am getting an error when I run celery -A backend beat -l info. It's super long though here is the head and tail: Head: [2021-10-29 07:29:36,059: INFO/MainProcess] beat: Starting... [2021-10-29 07:29:36,067: ERROR/MainProcess] Cannot add entry 'celery.backend_cleanup' to database schedule: ValidationError(["Invalid timezone '<LocalTimezone: UTC+00>'"]). Contents: {'task': 'celery.backend_cleanup', 'schedule': <crontab: 0 4 (m/h/d/dM/MY)>, 'options': {'expire_seconds': 43200}} Tail: django.core.exceptions.ValidationError: ["Invalid timezone '<LocalTimezone: UTC+00>'"] Celery beat hangs on this last error message and I have to kill it with ctrl + c. I went onto celery and read their instructions about manually resetting the database when timezone-related settings change - the … -
Setting a dropdowns values based on a different model selection
I currently have a model with 2 fields: Name & Number of Units When the first field is selected e.g. Name = Name1 I would like to display the Number Of Units saved in association with that model. e.g. Name1 has 50 units then the second < select > will show the number a list from 1 - 50 because Name1 has 50 units. When I do this with my code currently , it lists the max number of units for every model entry instead Please see the below code: template.html: <form> <select name="Complex"> {% for x in model %} <option value="{{ x }}">{{ x.ComplexName }}</option> {% endfor %} </select>> Complex <select> {% for x in model %} <option value="{{ x.NumberOfUnits }}">{{ x.NumberOfUnits }}</option> {% endfor %} </select> </form> Views.py: def customerDetails(request): model = ComplexListClass.objects.all().order_by('ComplexName') content = {'model': model} return render(request, 'main/customerDetails.html', content) Models.py: class ComplexListClass(models.Model): ComplexName = models.CharField(choices=complex_list , max_length = 50 ,default='1' , unique=True) NumberOfUnits = models.IntegerField(max_length=2 , blank=False , default=1 ) def __str__(self): return (self.ComplexName) -
Downloading files to client with django
I'm trying to download a file from Django to client. Currently, the request is made from axios, the file is fetched from Django and returned to the client. Inside the network tab, I can see a 200 OK response and the image is visible in the preview. However, the download is not being saved to the client desktop. I would appreciate any suggestions Download method: def download(request, pk): url = Model.objects.get(id=pk).__dict__["file1"] filename = url.rsplit("/", 1)[1] file_path = "temp/" + filename file_to_download = open(file_path, "rb") mime_type, _ = mimetypes.guess_type(file_path) response = HttpResponse(file_to_download, content_type=mime_type) response["Content-Disposition"] = "attachment; filename=%s" % filename return response Response headers HTTP/1.1 200 OK Date: Fri, 29 Oct 2021 08:01:15 GMT Server: WSGIServer/0.2 CPython/3.9.7 Content-Type: image/jpeg Content-Disposition: attachment; filename=default.jpg Vary: Origin Access-Control-Allow-Origin: http://localhost:3000 X-Frame-Options: SAMEORIGIN Content-Length: 10994 X-Content-Type-Options: nosniff Referrer-Policy: same-origin -
Filtering a date range field with date range
React/Django app. I want to add a date range filter (flatpickr) to already existing filters for orders. Orders has a period field (how long the order is valid), which is a DateRange field. Via the flatpickr I select a date range, and if at least one day of the order period is in that selected date range, it should show up as a result. ex. period: DateRange(datetime.date(2021, 2, 11), datetime.date(2021, 3, 14), '[)') I have the filter ready in FE to accept the results from BE. But I'm not sure how to achieve this in the BE. As I'm fairly new to this, my ideas are limited, but currently have this: ... from django_filters.rest_framework import DjangoFilterBackend, IsoDateTimeFilter, FilterSet from rest_framework import filters, mixins, status ... class OrderFilter(FilterSet): start_date = IsoDateTimeFilter(field_name="period", lookup_expr="gte") end_date = IsoDateTimeFilter(field_name="period", lookup_expr="lte") class Meta: model = Order fields = { "status": ["in"], "client": ["exact"], "created_by": ["exact"], } ordering_fields = ["period", "client__name", "destination__name"] ordering = ["period"] custom_field_target_model = Order I believe the closest thing I found, is IsoDateTimeFromToRangeFilter, but that doesn't seem to be what I'm looking for. -
Counting entries in a table using Javascript
I'm using django to list the number of cars sold in a particular dealership. (assuming there are only red and blue cars) I have designed the query in such a way that we could visualise cars at a monthly or weekly or yearly level. so the data in the table in going to be changing , so I have written the following javascript code to read the table that will be generated everytime . I have also used pagination to include only 10 in a page. The code just reads what is available on the first page and returns 10 every single time whereas I need it to consider all the pages . Can someone help <script> function counter(){ var j = 6; //j=6 is the column id for colour in my table , so I'm, directly using it var total = 0; var red= 0; var blue= 0; var table = document.getElementById("datatable"); for (var i = 1, row; row = table.rows[i]; i++) { var Row = document.getElementById("datatable").rows[i].cells[j].innerHTML; var blood_group = document.getElementById("datatable").rows[i].cells[j].innerHTML; //alert("running loop2"); //alert(document.getElementById("datatable").rows[i].cells[j].innerHTML); if (colour == "red") { red= red+ 1; } else if (colour== "blue") { blue= blue+ 1; } total = red+ blue; } document.getElementById("total_count").innerText = … -
Why some Django classes and default apps are called API?
I have recently started using Django and came across a few instances where in documentation some of the default django classes are referred to as APIs. One such instance is on this link where Model class is referred to as an API. This somehow doesn't make much sense to me. I have tried searching this on web but no help there. Is the Model class not a class and an API, or can it be both? I haven't studied Django Rest Framework at all, will it make more sense then? -
Tinymce generate so long src attribute in image tag when i upload any image
<img src="data:image/jpeg;base64,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" alt="" width="500" height="333"> I think this is too space consuming because it will be generate on each upload. How can i solve this? One thing it will show only when i see in django admin panel or when i see this as a edit as html through inspect.. When i see this without edit as html in inspect, it looks fine.. Like <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD…e5RQW1ytxK5gKhL+UQeXk+4A0qy6jZFXphXrA6IQDjyRh4//Z"> -
I'm getting a bad requests warning when trying to connect to the API I prepared with Django
I have a user API that I have prepared with django. However, when I make API requests with the Postman application for testing purposes, I get a 400 Bad Request warning, what could be the reason? I can write all of my codes as follows if there is any other required code. This is views.py code from rest_framework_simplejwt.views import TokenObtainPairView from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from .serializers import CustomUserSerializer from rest_framework_simplejwt.tokens import RefreshToken from rest_framework.permissions import AllowAny class CustomUserCreate(APIView): permission_classes = [AllowAny] def post(self, request, format='json'): serializer = CustomUserSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() if user: json = serializer.data return Response(json, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class BlacklistTokenUpdateView(APIView): permission_classes = [AllowAny] authentication_classes = () def post(self, request): try: refresh_token = request.data["refresh_token"] token = RefreshToken(refresh_token) token.blacklist() return Response(status=status.HTTP_205_RESET_CONTENT) except Exception as e: return Response(status=status.HTTP_400_BAD_REQUEST) This is my urls api/urls.py from django.urls import path from .views import CustomUserCreate, BlacklistTokenUpdateView app_name = 'users' urlpatterns = [ path('create/', CustomUserCreate.as_view(), name="create_user"), path('logout/blacklist/', BlacklistTokenUpdateView.as_view(), name='blacklist') ] core/urls.py from django.contrib import admin from django.urls import path, include from django.conf.urls.static import static from django.conf import settings from rest_framework_simplejwt.views import ( TokenObtainPairView, TokenRefreshView, ) urlpatterns = [ path('admin/', admin.site.urls), path("api/post/", include("post.api.urls", namespace="post")), path("api/post/audio/", … -
How to create a slug from non-English values?
I have the model Author with fields firstname, lastname. I wanna add another field 'slug' that will contain a slug of a concatenation of the fields. However, these fields contain non-English chars and I need an English slug to create the link template "localhost/authors/str::slug" How can I implement it? -
How to use force_update in Django?
a = Article(title="New Article", slug="new-article") a.save() print a OUTPUT New Article How I update only title using force_update. -
Django is not rendering the Images in Development
I started learning Django recently and I am also new to Web development. I am facing an issue with Django not loading images but loading CSS and JS files. I have done the setup as shown in Django documentation and also referred to many youtube videos. My setup is almost the same. But still images are not loading. Below is the Pip freeze of my virtual environment (venv) PS E:\django\myproject> pip freeze asgiref==3.4.1 Django==3.2.8 pytz==2021.3 sqlparse==0.4.2 Below is my Settings.py STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'products/static'), ] HTML {%for product in products %} <div class="card" style="width: 18rem;"> <img class="card-img-top" src="{% static 'products/images/flour.png' %}" alt="No Image"> <div class="card-body"> <h5 class="card-title">{{product.product_name}}</h5> <p class="card-text">{{product.product_description | default:"Nothing"}}</p> <a href="/products/{{product.id}}" class="btn btn-primary">Update</a> </div> </div> {%endfor%} Folder Structure myproject - settings.py - urls.py products - static - Products - images - flour.jpg - templates - models.py - urls.py - views.py Please let me know if anything more required Thanks in advance -
Django get_model() model has no attribute 'objects'
im writing a migration to update the data, i used get_model() like the docs describe to get the model class like so: from django.db import migrations def update_student(apps, schema_editor): # We can't import the model directly as it may be a newer # version than this migration expects. We use the historical version. CourseClass = apps.get_model('backend', 'CourseClass') from pprint import pprint pprint(vars(CourseClass)) for course_class in CourseClass.objects.all(): if course_class.course: if course_class.course.student: course_class.students.add(course_class.course.student) Course = apps.get_model('backend', 'Course') for course in Course.objects.all(): if course.student: course.students.add(course.student) class Migration(migrations.Migration): dependencies = [ ('backend', '0199_auto_20211027_1026'), ] operations = [ migrations.RunPython(update_student, migrations.RunPython.noop) ] And here is my model with some custom manager: class CourseClass(models.Model): class Meta: db_table = 'classes' verbose_name = _('Class') verbose_name_plural = _('Classes') student_manager = StudentManager() teacher_manager = TeacherManager() objects = models.Manager() # other fields When running my migration i got the following error: File "/Users/admin/Library/Caches/pypoetry/virtualenvs/base.django-AnqsdXoZ-py3.8/lib/python3.8/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards self.code(from_state.apps, schema_editor) File "/Users/admin/Documents/git/icts/vietphil.hoola/backend/migrations/0200_update_student.py", line 13, in update_student for course_class in CourseClass.objects.all(): AttributeError: type object 'CourseClass' has no attribute 'objects Printing out attributes of CourseClass using pprint return the following: mappingproxy({'DoesNotExist': <class '__fake__.CourseClass.DoesNotExist'>, 'MultipleObjectsReturned': <class '__fake__.CourseClass.MultipleObjectsReturned'>, '__doc__': 'CourseClass(id, name, date, time, duration, course, ' 'substitute_teacher, delay_from, status, over, ' 'class_type, canceled_by, note, teacher, ' 'datetimestart, … -
Django - inlineformset create view NOT NULL constraint failed
I have a CreateView with an inline formset that has a forecast_month & forecast_cost for each month of the year, I want it to save all 12 forecasts for each month but I keep getting this error. Ideally it should save 12 Forecast's one for each month with the selected project as the foreign key for each. Error: NOT NULL constraint failed: forecasting_forecast.forecast_cost (I have deleted & rerun migration multiple times) Models.py class Forecast(models.Model): project = models.ForeignKey(Project, on_delete=models.CASCADE) forecast_month = models.CharField(verbose_name="Month", max_length=200) forecast_cost = models.DecimalField(verbose_name="Forecast", decimal_places=0, max_digits=11) Views.py class ForecastCreateView(LoginRequiredMixin, CreateView): model = Forecast fields = ["project"] login_url = "/login/" success_url = '' def get_context_data(self, **kwargs): financialYears = ["July", "August", "September", "October", "November", "December", "January", "February", "March", "April", "May", "June"] initial = [{'forecast_month': forecast} for forecast in financialYears] ForecastChildFormset = inlineformset_factory( Project, Forecast, fields=('project', 'forecast_month', 'forecast_cost'), can_delete=False, extra=len(financialYears), widgets={'forecast_month': forms.Select(attrs={'disabled': True})}, ) data = super().get_context_data(**kwargs) if self.request.POST: data['forecast'] = ForecastChildFormset(self.request.POST, initial=initial) else: data['forecast'] = ForecastChildFormset(initial=initial) return data def form_valid(self, form): context = self.get_context_data() forecast = context["forecast"] form.instance.creator = self.request.user if forecast.is_valid(): self.object = form.save() forecast.instance = self.object forecast.save() else: return self.form_invalid(form) return super(ForecastCreateView, self).form_valid(form) -
How to get the names from a tuple list
I currently have a list of Names in a tuple list and when they are displayed on my form, they are displayed like so: ('Name1','Name1'), ('Name2','Name2'), ('Name3','Name3'), Which is exactly how they are shown in the code. How would I get them to display like so: Name1 Name2 Name3 My code currently looks like so Views.py def customerDetails(request): model = complex_list content = {'model': model} return render(request, 'main/customerDetails.html', content) template.html <form> <<select name="Complex"> {% for x in model %} <<option value="{{ x }}">{{ x }}</option> {% endfor %} </select>> Complex </form> -
Accessing self reference object in property/method Django
I have a user model class Account(AbstractBaseUser): first_name = models.CharField(max_length = 255, unique = False) last_name = models.CharField(max_length = 255, unique = False) email = models.EmailField(verbose_name = "email", max_length = 60, unique = True) is_sponsor = models.BooleanField(blank=True, default=True, help_text='Check if the user is a sponsor', verbose_name='Is this user a sponsor?') sponsored_by = models.ForeignKey('self',blank=True,null=True, on_delete=models.SET_NULL, default=None,limit_choices_to={'is_sponsor': True}), is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [ 'first_name', 'last_name', ] I have made a property for which I need to make use of 'sponsored_by' @property def sponsored_by_test(self): if self.sponsored_by is not None: if self.sponsored_by.first_name=="test": return True return False When I test it, x = Account.objects.get(first_name="test") print(x.sponsored_by) >> (<django.db.models.fields.related.ForeignKey>,) Hence I cannot access the 'sponsored_by' variable in the property (or anywhere). Am I missing something here? -
Why does an exception occur when I pop validated_data in DRF?
I am performing the creation using DRF's ModelSerializer. In the current model, there is a foreign key called description_type. So, when I receive a request, I receive it as a string in the field called description_type_code, pop the description_type_code in the validated_data of the create() method of the serializer, and use this description_type_code to get the corresponding description_type model. However, performing this task causes the following errors. Got AttributeError when attempting to get a value for field `description_type_code` on serializer `PostSerializer`. The serializer field might be named incorrectly and not match any attribute or key on the `Post` instance. Original exception text was: 'Post' object has no attribute 'description_type_code'. What's wrong with my code? Here's my code. models.py class Post(models.Model): ... description_type = models.ForeignKey(DescriptionType, models.DO_NOTHING, db_column='description_type') ... serializers.py class PostSerializer(serializers.ModelSerializer): description_type_code = serializers.CharField() class Meta: model = Post fields = ('title', 'description', 'description_type_code') def create(self, validated_data): description_type_code = validated_data.pop('description_type_code') description_type = DescriptionType.objects.get(name=description_type_code) post = Post.objects.create(**validated_data, description_type=description_type) return post