Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django email is giving error ''list' object has no attribute 'splitlines''
This is my email sending code in my view: def send_email(): if dasa == 1: send_mail( 'Test available', available_tests, 'from_email', ['to_email'], fail_silently=False, ) When I run my website I get this error: AttributeError at /tests/ 'list' object has no attribute 'splitlines' How can I fix it? I can't find anything, and I am following the format on how to send an email with django. -
How to associate steam account to a registered Django account through SteamOPENID? I'm using Python Social Auth (or should I use allauth?)
As said on the title, I'm having difficulty trying to associate a steam account to a registered Django account. I'm using Python Social Auth library for django I have a steam API key and it works. Using this code works: <p> <a href="{% url 'social:begin' 'steam' %}?next={{ request.path }}">Login with Steam</a> </p> It redirects me to the steam page and asks me to login, then if successful, redirects me back to my website. However, I don't know what to do after that? I see in the terminal that I get sent back a bunch of info about the player from Steam. -
Use of tokens in Django for validation in URLs
I need to e-mail visitors (not registered users) a link to view a page on my website. The page will have an ID that corresponds to a certain record in the database. However, I would like to ensure that the users indeed got the link from the e-mail and didn't just manually enter a database ID. To do so, adding a token to the URL seems a good way to go. Unless I have to, I prefer to NOT store additional information (the token) in the database, but instead use the existing ID to create the token (using some sort of a salt), and re-generate the token based on the ID and check if this is valid. My question is: what is a good way to generate this token in Django? Is it a good idea to use the make_password function? Or do I use say SHA1 encryption of the string? What trade-offs should I take into account and is there a specific route that would be preferred for this situation? -
Forwarding to another view swallows one argument
I have a ListView that checks for a user right and forwards a queryset or redirects to another view depending on the user's rights: class SelectRegisterListView(StoreMixin, ListView): template_name = f"{TEMPLATE_ROOT_SHELF}/select_register.html" def get_queryset(self): registers = Register.objects.filter(store = self.store) print(registers, registers.first().pk) ## works ... and 4 if check_custom_registers_allowed(self.request) == True: return registers return redirect("select-quality", ins_id = self.kwargs["ins_id"], pg = self.kwargs["pg"], reg = registers.first().pk) I have this in my urls.py: path("selectquality/<int:ins_id>/<int:pg>/<int:reg>", views.SelectRegisterListView.as_view(), name = 'select-quality'), which fails with a NoReverseMatch error: Reverse for 'select-quality' with keyword arguments '{'ins_id': 1849332, 'pg': 3, 'reg': ''}' not found. I now tried different values instead of registers.first().pk and I need help understanding this: when adding an int -> reg stays empty - also happens when adding str(4) return redirect("select-quality", ins_id = self.kwargs["ins_id"], pg = self.kwargs["pg"], reg = 4) Reverse for 'select-quality' with keyword arguments '{'ins_id': 1849332, 'pg': 3, 'reg': ''}' not found. when adding a str -> reg has value, but fails return redirect("select-quality", ins_id = self.kwargs["ins_id"], pg = self.kwargs["pg"], reg = "test") Reverse for 'select-quality' with keyword arguments '{'ins_id': 1849332, 'pg': 3, 'reg': 'test'}' not found. The last case is obvious, reg needs to be of type int, not str. But why does the first approach … -
Django Rest Framework 500 status, but still creates an instance (not-null constraint)
I have this very weird bug which i cannot debug since a few hours. I keep getting an error on my post request creating an instance of a liked product in database. django.db.utils.IntegrityError: null value in column "product_id" of relation "ecommerce_like" violates not-null constraint DETAIL: Failing row contains (31, null, null). What's weird is that it creates this instance and works perfectly, yet gives status.500 and i have no idea how to remove it. So i have this model: class Like(models.Model): product = models.ForeignKey('ProductInStore', on_delete=models.PROTECT) user = models.ForeignKey('users.CustomUser', on_delete=models.PROTECT) class Meta: unique_together = ('product', 'user',) class ProductInStore(models.Model): product = models.ForeignKey('Product', on_delete=models.CASCADE) class Product(models.Model): name = models.CharField(max_length=200) And the code for creating an instance of Like is like this: class LikeProductApi(generics.CreateAPIView): queryset = Like.objects.all() serializer_class = LikeSerializer def create(self, request, *args, **kwargs): product_id = self.kwargs['pk'] product = ProductInStore.objects.get(id=product_id) if Like.objects.filter(user=self.request.user, product=product).exists(): raise ValidationError("This user already likes this product") else: Like.objects.create(user=self.request.user, product_id=product_id) return super().create(request, *args, **kwargs) class LikeSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault()) product = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: model = Like fields = ('user', 'product',) Do you have any idea what's wrong? -
How can I update a value in the db from a template Django?
I'm new to django, javascript, and development in general. But when creating a web application, I had the task of making it possible to change the statuses in the database records on the page. Unfortunately, my technical skills are not enough to sort out this issue. I need help Here is my model.py (simplified) class aplicationSend(models.Model): status = [ ('1', 'In store'), ('2', 'In warehouse'), ('3', 'Send'), ] DOC_TYPE = [ ('1', 'Doc1'), ('2', 'Doc2'), ] date = models.DateTimeField(verbose_name='Date', default=now) doc_type = models.CharField(verbose_name='Document type', choices=DOC_TYPE, max_length=100, default=1) status_select = models.CharField(verbose_name='Status', choices=status, default=1, max_length=100) The task is to display the select in the template and, when it changes, immediately send a request to the database to update the record in the model views.py @login_required def aplication(request): search = request.GET.get('search') model = aplicationFilter(request.GET, queryset=aplicationSend.objects.all()) if search: model = aplicationFilter(request.GET, queryset=aplicationSend.objects.filter(phone_num__icontains=search) | aplicationSend.objects.filter(invoice_num__icontains=search)) form = aplicationSendForm if request.method == "POST": form = aplicationSendForm(request.POST) if form.is_valid(): instance = form.save(commit=False) instance.staffer = request.user instance.fromTT = request.user.profile.location instance.save() messages.success(request, 'Success') else: messages.error(request, 'Error') return redirect(request.path) HTML <form action="" method="post"> {%csrf_token%} <table style="width: 100%; text-align: center;" class="out_model"> <tbody> {% for qs in model.qs %} <tr> <td><input type="checkbox" name="select" id="selectel"></td> <td style="width: 150px;">{{qs.get_status_select_display}}</td> <td>{{qs.get_doc_type_display}}</td> <td>{{qs.date}}</td> <td>{{qs.phone_num}}</td> <td>{{qs.invoice_num}}</td> <td>{{qs.fromTT}}</td> … -
How can i make this nested Django Query?
How can i make this django query? Models: class Card(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) name = models.CharField(max_length=255, null=True, blank=True) description = models.TextField(null=True, blank=True) cover = models.CharField(max_length=255, null=True, blank=True) member = ArrayField(models.CharField(max_length=255, null=True, blank=True), null=True, blank=True) label = ArrayField(models.CharField(max_length=255, null=True, blank=True), null=True, blank=True) subscribed = models.BooleanField(default=False) due = models.DateTimeField(auto_now_add=False, null=True, blank=True) class Checklist(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) name = models.CharField(max_length=255, null=True, blank=True) class CardChecklist(models.Model): card = models.ForeignKey(Card, on_delete=models.CASCADE, null=True) checklist = models.ForeignKey(Checklist, on_delete=models.CASCADE, null=True) class Checkitem(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) name = models.CharField(max_length=255, null=True, blank=True) checked = models.BooleanField(default=False) class ChecklistCheckitem(models.Model): checklist = models.ForeignKey(Checklist, on_delete=models.CASCADE, null=True) checkitem = models.ForeignKey(Checkitem, on_delete=models.CASCADE, null=True) Expected Example Query Result (All Checklists of an indicated Card with its related checkitems): [{'id':'1', 'name':'checklist1', 'user':'1', 'CheckItems': [{'id': '1', 'user':'1', 'name':'Checkitem 1', 'checked':True}, {'id': '2', 'user':'1', 'name':'Checkitem 2', 'checked':False}]}, {'id': '2', 'name':'checklist2', 'user':'1', 'CheckItems': [{'id': '3', 'user':'1', 'name':'Checkitem 3', 'checked':True}, {'id':'4', 'user':'1', 'name':'Checkitem 4', 'checked':False}]}] Closest Attempt cardChecklists = list( Checklist.objects .filter(cardchecklist__card=cardId) .values('id', 'name', 'user', CheckItem = F('checklistcheckitem')) ) [{'id':'1', 'name':'checklist1', 'user':'1', 'CheckItems': 1}, {'id':'1', 'name':'checklist1', 'user':'1', 'CheckItems': 2}, {'id': '2', 'name':'checklist2', 'user':'1', 'CheckItems': 3}, {'id': '2', 'name':'checklist2', 'user':'1', 'CheckItems': 4}] -
Why does "django-bootstrap-v5" exist?
I've been following a tutorial "https://youtu.be/0mCZdemSsbs" and others (some Bootstrap 4 others v5), that do not use "django-bootstrap-v5" (see https://django-bootstrap-v5.readthedocs.io/en/latest/ ). I'm wondering if / why it exists, and should I use it? -
Efficient Way of Creating Dynamic URL's from a Global Nav? Django
I'm developing a Task management platform in which users can register a Project and then create tasks for their Project. Currently my url structure is as follows: example.com/customer/project_name/ example.com/customer/project_name/tasks/ example.com/customer/project_name/task-creation/ etc. project_name comes off of the Project model and I'm using slug matching to return the appropriate Project. The problem is, I can't think of a way of passing the project_name slug without duplicating my navigation across all pages or making my views unnecessarily complex. For instance, I have both DetailViews and ListViews so object.slug won't work across the board. The second problem is that on child pages the slug variable changes from 'slug' to 'project_main'. If I'm not mistaking I believe this change is necessary for proper hierarchy. My urls.py app_name = 'projecthome' urlpatterns = [ path('invite-registration/', views.invite_registration, name='invite-registration'), path('team/', views.team, name='team'), path('<slug:slug>/', ProjectDetailView.as_view(), name='project_main'), path('<slug:project_main>/tasks/', TaskListView.as_view(), name='tasks'), path('<slug:project_main>/tasks/create-task/', CreateTaskView.as_view(), name='task- creation'), ] Showing just a few for brevity. So object.slug would only work from project_main view, object.project_main or object_list.project_main would have to be used for the other views. Although, I'm not sure if the slug is inherently in the context for subsequent views as I've only been to get it to work from project_main. What's the best way … -
How can I access my static files from my Django app?
I have a Django app running in a Docker container. I am using Nginx to serve as the production server with a docker-compose file putting the app, Nginx and Postgres together in a network of containers. I set up my Dockerfile as follows: FROM python:3.9.6-buster ENV HOME=/home/app/ ENV APP_HOME=/home/app/web RUN mkdir -p "${APP_HOME}/staticfiles" # Create user ENV PYTHONBUFFERED=1 WORKDIR $APP_HOME COPY requirements.txt $APP_HOME RUN pip install -r requirements.txt COPY . $APP_HOME which as you can see sets a staticfiles directory. However, following normal Django principals my file structure is /home/app/web/quote_checklist/static/quote_checklist when I exec into the web container. I'm using the following in my settings.py BASE_DIR = Path(__file__).resolve().parent.parent STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") When I access the index page I am getting an error that the directory/file /home/app/web/staticfiles/quote_checklist/css/base.css is not found, suggesting my app is looking in this staticfiles directory, which has nothing in it. I tried removing the /staticfiles/ bit from my static volume as well but then the system just looks in /home/app/web/static/quote_checklist/css/base.css rather than following the normal Django path, which would be to look in quote_checklist/static/quote_checklist/css/base.css. Does anyone have suggestions? -
Creating object with generics CreateApiView 'request' required
This is my serializer and Viewset, i want to create an instance of Like if someone likes a product (Post request 'products/product:id/like'). But i get an error that 'request' is required. class LikeSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault()) product = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: model = Like fields = ('user', 'product',) class LikeProductApi(generics.CreateAPIView): queryset = Like.objects.all() serializer_class = LikeSerializer def create(self, request, *args, **kwargs): product_id = self.kwargs['pk'] product = ProductInStore.objects.get(id=int(product_id)) if Like.objects.filter(user=self.request.user, product=product).exists(): raise ValidationError(_("This user already likes this product")) else: return super().create(user=self.request.user, product_id=product_id, **kwargs) Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 179, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rest_framework/generics.py", line 190, in post return self.create(request, *args, **kwargs) File "/Users/jakubstrawa/programming/PythonKuba/api/ecommerce/views.py", line 124, in create return super().create(user=self.request.user, product_id=product_id, **kwargs) TypeError: create() missing 1 required positional argument: 'request' Do you have any idea why? -
Division between two annotations
I'm creating those two annotations as it follows: cs = Champion.objects.all() total_games = Match.objects.all().count() cs = cs.annotate( picked_games=Count( expression='participants__match__id', filter=Q(participants__role='BOTTOM'), distinct=True ), total_games=Value(str(total_games), output_field=IntegerField()) ) And everthing's alright until here. I fetch both the picked_games and total_games with correct results. >>> cs.get(name='Jhin').picked_games 27544 >>> cs.get(name='Jhin').total_games 97410 However, if i try to divide one by another: cs = cs.annotate( pick_rate=ExpressionWrapper( expression=F('picked_games') / F('total_games'), output_field=FloatField() ) ) This results on a 0: >>> cs.get(name='Jhin').pick_rate 0.0 I don't understand what's problem here.. I can get the result if divide them externally, so why can't i get the result on a different column for the whole queryset? >>> cs.get(name='Jhin').picked_games / cs.get(name='Jhin').total_games 0.28319474386613286 -
My email isn't sending with django, giving weird errors
This is my settings.py: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_USE_TLS = True EMAIL_PORT = 587 EMAIL_HOST_USER = 'my_email' EMAIL_HOST_PASSWORD = 'my_password' This is the views.py (shortened): from django.core.mail import send_mail send_mail( 'Test available', available_tests, 'from_email', ['to_email'], fail_silently=False, ) I get this error when I run it: SMTPAuthenticationError at /tests/ (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt\n5.7.14 tw36yR7hn8otxR29NEQL37XEj4odHZyoNuW6V9x_AMqT-nzMaVhpV27LiIgjAi7lr2GKo\n5.7.14 Ec1mJIx6e--XhSr_V31TVZe6UfjUhrShxE-UwxoTZhF2RTS-X5zesGeo3NZf53B7>\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 t11sm23243834qtx.16 - gsmtp') Request Method: GET Request URL: https://myapp.herokuapp.com/tests/ Django Version: 4.0.1 Exception Type: SMTPAuthenticationError Exception Value: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt\n5.7.14 tw36yR7hn8otxR29NEQL37XEj4odHZyoNuW6V9x_AMqT-nzMaVhpV27LiIgjAi7lr2GKo\n5.7.14 Ec1mJIx6e--XhSr_V31TVZe6UfjUhrShxE-UwxoTZhF2RTS-X5zesGeo3NZf53B7>\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 t11sm23243834qtx.16 - gsmtp') Exception Location: /app/.heroku/python/lib/python3.9/smtplib.py, line 662, in auth Python Executable: /app/.heroku/python/bin/python Python Version: 3.9.10 Python Path: ['/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python39.zip', '/app/.heroku/python/lib/python3.9', '/app/.heroku/python/lib/python3.9/lib-dynload', '/app/.heroku/python/lib/python3.9/site-packages'] Server time: Thu, 17 Feb 2022 21:48:04 +0000 I've allowed less secure apps in my google account, I've clicked that it was me in the email, how do I fix it? -
Django how to automatically render name of patient if exact value matched?
I have an forms for set appointment. see the picture If any patient fill the mobile number and he already exist in my database then I want to automatically render his name in my patient name fields. Suppose I have an patient name Jhone and his mobile number +123456. If Jhone input his mobile number then I want his name will be automatically render in my patient name fields. How to that in djago? here is my code: models.py class Patient(models.Model): patient_name = models.CharField(max_length=150) patient_number = models.CharField(max_length=50, blank=True, null=True) class Appointment(models.Model): patient = models.ForeignKey( Patient, on_delete=models.CASCADE, blank=True, null=True) patient_name = models.CharField(max_length=100, blank=True, null=True) patient_number = models.CharField(max_length=50, blank=True, null=True) views.py: if form.is_valid(): form.save() messages.add_message(request, messages.INFO,f'Appoinment added sucessfully for {form.instance.patient_name}') return redirect('hospital:add-appointment') else: form = AppointmentForms() -
synchronization between SQL local db and MYSQL on server
I have Desktop Application with SQL local DB and Web app with Django and mysql Database whats the best method to sync the local clients which is more than 50 user with only oner server and its mysql which method work perfect in this section -
Requests to AWS using Django not using correct parameters on all files
I have a Django application that upon loading the admin, only receives 4 out of 6 of the necessary static files. The difference between the 4 successful and the 2 failed is that the following paramters are not present in the failed requests: X-Amz-Algorithm X-Amz-Credential X-Amz-Date X-Amz-Expires X-Amz-SignedHeaders X-Amz-Signature However the parameters are present in the request headers referer. Also it is consistently the same 2 files. And yes they exist as I will mention further down in this question. I installed django-storages and boto3 to work with AWS. Here are the relevant settings from settings.py: INSTALLED_APPS = [ ... 'storages', ... ] AWS_S3_ACCESS_KEY_ID = 'my-access-key' AWS_S3_SECRET_ACCESS_KEY = 'my-secret-access-key' AWS_STORAGE_BUCKET_NAME = 'my-bucket-01' AWS_S3_FILE_OVERWRITE = False AWS_DEFAULT_ACL = None DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' AWS_S3_REGION_NAME = 'eu-west-2' AWS_S3_SIGNATURE_VERSION = 's3v4' AWS_S3_ADDRESSING_STYLE = "virtual" A successful request: https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/responsive.css?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=my-access-key%2F20220217%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220217T212138Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=31bc0e43fcc693f70c7662432ee6d88d8358652894611a0f7387ac35febf5ef9 A failed request: https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/fonts.css Failed requests referer: https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/base.css?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=my-access-key%2F20220217%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220217T212138Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=af8fb82686dd0dcc2600eebdf9ceecec482dd44be02a3c3f3a9b793f96cee617 I went to the link in the referer and it worked. So my question is either: Why do only some of my requests include the correct parameters and how do I get them to use the correct ones? or How do I force the requests to use the referers? -
Filter urlencode with 2 Level reverse relationship
I have these models: class Issuer(models.Model): name = models.CharField() @property def investor_count(self): return Investment.objects.filter(offering__issuer_id=self.pk).count() or 0 def __str__(self): return self.name class Offering(models.Model): issuer = models.ForeignKey(Issuer, on_delete=models.CASCADE) name = models.CharField() def __str__(self): return self.name class Investment(models.Model): offering = models.ForeignKey(Offering, on_delete=models.CASCADE) name = models.CharField() def __str__(self): return self.name And I want to display in the Issuer list view the number of investments it has. This is the function I'm currently using, # link investments to page def view_investments_link(self, obj): count = obj.investor_count url = ( reverse("admin:crowdfunding_investment_changelist") + "?" + urlencode({"issuer__id": f"{obj.id}"}) ) return format_html('<a href="{}">{} Investment(s)</a>', url, count) view_investments_link.short_description = "NUMBER OF INVESTMENTS" And this is how it looks: But the line + urlencode({"issuer__id": f"{obj.id}"}) does not work. It changes my url to http://localhost:8000/app/investment/?e=1. Is there a way to filter Investments using the issuer_id? -
send form after paypal payement is approuve
hello I am working with django I have a form that should be posted if the paypment is done, I don't know what should I do exaclty I tried but doesn't work for me, anyways in my html page I have a form and submit button and then the paypal payment <div id="paypal-button-container"></div> -
How to reload the current page when form was sent?
Hey, after the form was sent the page needs to be automatically reloaded / refreshed. Either just the current page is going to be reloaded or the variable slug_title (which would be part of the current page url) needs to be passed into the (' ') from HttpResponseRedirect. Do you have any suggestions? I would really appreciate it. :) views.py def posts(request, slug_titel): post = get_object_or_404(Thread, slug_titel=slug_titel) form = ThreadForm() if request.method == "POST": form = PostForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(' ') # <- here I need to put in slug_title from above -
How to add multiple values to checkbox field? Django
I am have a form with a checkbox field and hidden price field inside for loop like this: {% for item in inventory %} <input type="checkbox" name="item_name" id="{{forloop.counter}}" value="{{item.name}}"> <input type="hidden" name="item_price" value="{{item.price}}"> {% endfor %} But I also want to add item.price of the selected item to it. Basically I would like to get the data from views like this: item_name = request.POST.getlist('item_name') price = request.POST.getlist('price') Which would both have a list of chosen items. ['item name 1', 'item name 2'] ['item price 1', 'item price 2'] or together [['item name 1', 'item price 1']['item name 2', 'item price 2']] The second option would be better but I have no clue how to do that. Also I would like to add more values to it in the future. How do to do that? -
Listing objects field instead of Object in Django Rest Framework
I've got a model class Like(models.Model): product = models.ForeignKey('ProductInStore', on_delete=models.PROTECT) user = models.ForeignKey('users.CustomUser', on_delete=models.PROTECT) class Meta: unique_together = ('product', 'user',) and a serializer class LikeSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault()) product = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: model = Like fields = ('user', 'product',) class UserLikedProductsApiList(generics.ListAPIView): queryset = Like.objects.all() serializer_class = LikeSerializer And so if someone likes a product, adds it to favourites, it creates an Like object in database. And i want to create an endpoint users/me/likedProducts so that i can list all the products that self.user.request has liked. Meaning all the Like instances but instead of Like instances i want to show only Like.product instances. Lets say a person x has liked 4 items, and i want to show only 4 items in that list. Do you have any idea how to get around that in Django Rest Framework? -
how to change an object when creating another object in django?
I am writing a financial accounting application. I am using drf. I can not figure out how to change the account when creating the "expense" object Models count = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='Расход') date = models.DateField(blank=True, verbose_name='Дата', null=True) account = models.ForeignKey(Cash, on_delete=models.CASCADE, verbose_name='Счёт', default=DEFAULT_CHECK_ID) category = models.ForeignKey(Categories, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='Категория') place = models.ForeignKey(Places, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='Место платежа') comment = models.CharField(max_length=150, blank=True, verbose_name='Комментарий') is_income = models.BooleanField(verbose_name='Доход') Serializer class CountSerializer(serializers.ModelSerializer): category = serializers.CharField() place = serializers.CharField() account = serializers.CharField() Views class CountViewSet(ModelViewSet): queryset = Count.objects.all() serializer_class = CountSerializer filter_backends = [DjangoFilterBackend, SearchFilter] permission_classes = [IsAuthenticated] filter_fields = ['category', 'place'] search_fields = ['count'] def create(self, request): count = self for i in count: if i.is_income: account_id = i.account.id result = i.account.balance + i.count return Cash.objects.filter(id=account_id).update(balance=result) -
Django apostrophe escaping change
While upgrading Django I noticed that the html escape function used to translate an apostrophe into &#39; whereas it now translates it into &#x27;. I understand the old value is the HTML code and the new value is the hex code. The change seems to have come about because Django used to do the translation itself but now hands it off to python's html module. My question is, are these functionally equivalent? Are there any case where I would need to worry about this change? Also, in case I am not asking the right questions, can anyone direct me to what I should read to understand why these 2 types of codes exist and how they are used? -
How to add another model inside of first model with @property? django
I have Slot model, and OutletToSlot model. In OutletToSlot i can get Slot, but in slot i can't do it. So, I want to add second model inside my first model, why my solve doesn't work? class Slot(models.Model): owner = models.ForeignKey(Profile, null=True, blank=True, on_delete=models.CASCADE) outletsSlotInventory = models.ForeignKey(OutletsSlotInventory, on_delete=models.CASCADE) id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False) class Meta: unique_together = [['owner', 'outletsSlotInventory']] @property def outletToSlot(self): outletToSlots = self.outletToSlot_set.all() myOutletsToSlots = outletToSlots.filter(owner.id=id); return myOutletsToSlots def __str__(self) -> str: return str(id) class OutletToSlot(models.Model): outletToSlotId = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) expireTime = models.DateTimeField(blank=True) outlet = models.ForeignKey(Outlet, null=True, blank=True, on_delete=models.CASCADE, default=0) slot = models.OneToOneField(Slot, null=True, blank=True, on_delete=models.CASCADE) def __str__(self) -> str: return "{0} - {1}".format(self.outlet.label, self.slot) -
Create AutoCAD with Python
Is it possible to create an application like AutoCAD, 3D-Max, SketchUp with python and make it online? I mean creating a similar app from scratch, not using APIs!