Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How can i refactor this to remove DRY
I have two serializers implemented here with same methods that is to validate the files 1 and 2 how can i refactor my code here so that i take care of DRY serializers.py class FilecreateSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = ( 'file', ) def create(self, data): user = self.context['request'].user if not user.is_anonymous: validated_data.update({'uploaded_by': user.person}) return super().create(data) def file_checking(self, file): ca = pd.read_excel(file, dtype=str) if not something(): raise ValidationError() return file class FileUpdateSerializer(serializers.ModelSerializer): class Meta: model = Mymodel fields = ('file_2',) def file_2_checking(self, file): ca = pd.read_excel(file, dtype=str) if not something(): raise ValidationError() return file -
Get the error "List object has no attribute error" while creating a virtual environment [closed]
When creating a virtual environment in some folder, I get the error, Error: 'list' object has no attribute 'read', but despite this, the environment is created like in the image. But when I want to activate it gives an error "Scripts\activate" is not internal or external command, executable program, or batch file. -
Django - difference in time between big serializer and small
I'm creating a music rating app and I'm using REST Framework to create API in Django. It's super easy but I'm wondering if there is any big difference in loading time when using big serializers model and small. By big and small I mean like in getting more data. For instance I have a album page where I need to use this serializer. "id": 2, "title": "OK Computer", "slug": "ok-computer", "created_at": "2022-02-22T21:51:52.528148Z", "artist": { "id": 13, "name": "Radiohead", "slug": "radiohead", "image": "http://127.0.0.1:8000/media/artist/images/radiohead.jpg", "background_image": "http://127.0.0.1:8000/media/artist/bg_images/radiohead.jpg", "created_at": "2022-02-22T00:00:00Z" }, "art_cover": "http://127.0.0.1:8000/media/album/art_covers/ok-computer_cd5Vv6U.jpg", "genres": [ "Alternative Rock", "Art Rock" ], "overall_score": null, "number_of_ratings": 0, "release_date": "1997-05-28", "release_type": "LP", "tracks": [ { "position": 1, "title": "Airbag", "duration": "00:04:47" }, { "position": 2, "title": "Paranoid Android", "duration": "00:06:27" } ], "links": [ { "service_name": "spotify", "url": "https://open.spotify.com/album/6dVIqQ8qmQ5GBnJ9shOYGE?si=L_VNH3HeSMmGBqfiqKiGWA" } ], "aoty": null This serializer is rather massive and I only need this data for Albums details page. I also pull this data in Albums list page where I list all my albums and almost all of this data is not used. If I make another serializer, little less complex and use it in albums list page, will there be a drastic difference in load speed? And if … -
Render a Table in Template with "far" foreign key in Django
I have the need to render a Table in a ListView template in a Django app, but the information to render comes from diferent tables, so far I have the next logic built: model.py class Plan(models.Model): name = models.CharField(...) description = models.CharField(...) type = models.ForeignKey('Type', on_delete=models.CASCADE, null=False) def get_absolute_url(self): return reverse('plans:plans_detail', kwargs={'pk': self.pk}) def __str__(self): return self.name class Type(models.Model): client = models.ForeignKey('clients.Client', on_delete=models.CASCADE, null=False) name = models.CharField() levels = models.IntegerField() def get_absolute_url(self): return reverse('plans:type_detail', kwargs={'pk': self.pk}) def __str__(self): return self.name class Levelname(models.Model): plan_type = models.ForeignKey(Type, on_delete=models.CASCADE) level = models.IntegerField() name = models.CharField() strategy_name = models.CharField() class Meta: unique_together = ('plan_type', 'level',) def __str__(self): return self.name class Node(models.Model): parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE) plan = models.ForeignKey(Plan, on_delete=models.CASCADE, related_name='nodes') name = models.CharField(max_length=100, null=False) level = models.ForeignKey(LevelName, on_delete=models.CASCADE, related_name='nodes') description = models.CharField(max_length=500, null = True, blank = True) def __str__(self): return self.name For this tables, y created a view that for a created Plan render the associated Node with the next view: class NodeCreateStructure(LoginRequiredMixin, ListView): model = Node def get_queryset(self): ## Prefetch hace el join en el return return Node.objects.filter(plan_id= self.kwargs['plan_pk']).prefetch_related('plan__type') I want to print a Table that shows the Node Structure like this example: I hope it's understandable, thanks so many … -
Django removes my custom html attributes from option tag
I am trying to add custom data-* attributes to the option tag in a select element. I have my custom template (widget) which is used by Django, but it seems like Django removes my custom attributes. somewhere in further steps My custom option template: widgets/tree_option_template.html <option value="{{ widget.attrs.lft|stringformat:'s' }}" data-test="test" >{{ widget.label }} - {{ widget.attrs.rght|stringformat:'s' }}</option> Custom widget: class MultiChoiceFilterWidget(forms.SelectMultiple): """ TODO. Based on FilteredSelectMultiple """ option_inherits_attrs = True option_template_name = "widgets/tree_option_template.html" ... Usage in admin.py: class UserAdminForm(forms.ModelForm): class Meta: model = User fields = "__all__" read_projects = CustomTreeNodeMultipleChoiceField( queryset=Project.objects.filter(disabled=False), required=False, widget=MultiChoiceFilterWidget(verbose_name="Projects", is_stacked=False), ) When I am changing e.g. value attribute then it changes in DOM as well but my custom attributes are not available in HTML: As we can see there is no data-test attribute... Any idea why my custom tags are not visible in HTML? Thanks! -
django - resize images with pil
In my app In the save method I am compressing uploaded images. Now I want to also resize the images if they are very large. I played around with PIL in a test environment and came up with this code that works as expected. from PIL import Image image = Image.open('img.jpg') (w,h) = image.size if (w > 2000): i = image.size # current size (height,width) i = i[0]//2, i[1]//2 # new size image = image.resize(i, Image.ANTIALIAS) image.save('halfresizesssd.jpg') However when I try to merge it into my django project I get this error 'int' object is not subscriptable - i = i[0]//2, i[1]//2 # new size If i understand the error correctly it is because i am passing an int as an array, I dont really understand that because if i try and pass say 2 instead of i i get the same error. I tried to just resize the image and skip the compression but I was still getting the same error def compress(image): im = Image.open(image) # create a BytesIO object im_io = BytesIO() #resize image im = im.convert("RGB") im = im.save(im_io,'JPEG', quality=70, optimize=True) # create a django-friendly Files object new_image = File(im_io, name=image.name) w = new_image.size if (w … -
How to POST image of nasted serializer using postman django APIVIEW
I know how to post image for normal field (using form-data in postman) but I'm stack when I need to post nested serializer contain an image field. Serializer.py looks like: class ProgramSerializer(serializers.ModelSerializer): image=ImageSerializer() class Meta: model = Program exclude = ('create_date') class ImageSerializer(serializers.ModelSerializer): class Meta: model = Image field= ('image','name') views.py : class program_apiView(APIView): def post(self, request): parser_classes = [MultiPartParser,FormParser] serializer = programSerializer(data= request.data) if serializer.is_valid(): serializer.save() return Response( serializer.data, status = status.HTTP_201_CREATED ) -
Chart with date selector in a Django project
I want to create a Javascript chart with a date selector in my Django project like this example: https://plotlydash.com/pie-chart-with-drop-down-list-and-date-picker-range-in-plotly-dash/ I created a date selector input in my chart.html file. This will allow me to append the input date value to URL when I click "generate report". For example: it will append: ?start=2022-02-02&end=2022-02-24 in the URL link. <div class="d-sm-flex align-items-center justify-content-between mb-4"> <form method="get" action="chart/"> <div class="form-row"> <label for="start">Start Date:</label> <div class="col"> <input type="date" class="form-control" name="start_date" min="2020-01-03" required> </div> <label for="end">End Date:</label> <div class="col"> <input type="date" class="form-control" name="start_date" min="2020-01-03" required> </div> <button type="submit" class="btn btn-primary"><i class="fas fa-download fa-sm text-white-50"></i> Generate Report</button> </div> </form> The output of this date selector on my chart.HTML page is: My chart data is based on a list of dictionaries. It's a Django project, so my data is defined in views.py: I count the number of records with Mike, Jane and Jack. mylist= [{'Date': '2021-10-02', 'ID': 11773, 'Receiver': Mike}, {'Date': '2021-10-02', 'ID': 15673, 'Receiver': Jane}, {'Date': '2021-10-03', 'ID': 11773, 'Receiver': Mike}, ... {'Date': '2021-12-25', 'ID': 34653, 'Receiver': Jack}] mike=len(tuple(d for d in mylist if d['Receiver'] == 'Mike')) jane=len(tuple(d for d in mylist if d['Receiver'] == 'Jane')) jack=len(tuple(d for d in mylist if d['Receiver'] == 'Jack')) count = … -
what does [0] mean in django query?
for example when I want to filter a query, why should I write [0] at the end? order_item = OrderItem.objects.filter( item=product, user=self.request.user, ordered=False )[0] when I don't add [0] at the end it raises an error something like that: Field 'id' expected a number but got <QuerySet [<OrderItem: OrderItem object (5)>]>. or in another situation when I don't add [0] at the end, it raises this error: 'QuerySet' object has no attribute 'items' -
Visual Studio Code autoimport extension
I am looking for a solution on a problem I am having in VSCode. In fact, I was using an extension which was making auto - import between models and so on in Django Projects. The thing is, I had to reset my Mac and I forgot which extension that was. It was something that was also able to make all the used imports let's say with a more vivid color on VSCode and also was making all the "unused" variables (the one that were not used in the context in django or other variables) with less vivid colors. This extension also changed the color of the models in Django too, giving all the type of DB entries (like Charfield or Foreign Key) a different color. I know it's a little bit tricky to understand but I tried to find out which extension that was but I really don't remember. Thank you very much for any help -
Connecting to a remote db through a jump server in Django
I'm trying to tunnel my db connection in a django application through a jump server but can't seem to get it working because django manage.py handles & process the connections. here's that I have in the settings.py #process ssh_key first ssh_key= os.getenv('SSH_KEY', '').encode('utf8').decode('unicode_escape') server ={} with sshtunnel.open_tunnel( (os.environ.get('SSH_HOST'),int(os.getenv('SSH_PORT'))), ssh_pkey=paramiko.RSAKey.from_private_key(io.StringIO(ssh_key)), ssh_username= os.environ.get('SSH_USERNAME'), remote_bind_address=(os.environ.get('DB_HOST'), int(os.getenv('DB_PORT'))), ) as ssh_proxy_host: server={ 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': os.environ.get('DB_HOST'), 'PORT': ssh_proxy_host.local_bind_port, 'NAME': os.environ.get('DB_NAME'), 'USER': os.environ.get('DB_USER'), 'PASSWORD': os.environ.get('DB_PASS'), } # here's where I should have the connection function to db, but don't know if django has that option available -
How do I write logs to docker container in a Django project?
I am trying to configure my local logger to write the logs to docker container, so I can see the logs in the list displayed by the command docker[-compose] logs <container> --tail 100 In settings.py, I configured LOGGING variable like this: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[DJANGO] %(levelname)s %(asctime)s %(module)s ' '%(name)s.%(funcName)s:%(lineno)s: %(message)s' }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'default', } }, 'loggers': { '': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True, } }, } In the files where I need the loggers, at the beginning, I am writing: import logging logger = logging.getLogger(__name__) Then, in my code where I need it I write: ....... logger.error('something happened') ....... As I configured my logger, the log will be displayed in the console. But my problem is: How can I display it in docker container when I call the aforementioned command ? Example like desired output: ........ web_1 | [2022-02-23 17:37:10 +0200] [9] [INFO] ASGI 'lifespan' protocol appears unsupported. web_1 | [2022-02-23 17:37:10 +0200] [9] [INFO] Application startup complete. web_1 | [2022-02-23 17:37:10 +0200] [10] [INFO] Application startup complete. web_1 | My log somewhere here.. ........ Thank you very much … -
How can I pass True into form if one field is selected and False if another
I have select field in my html <select class="form-select" name="is_recurrent" id="payment"> <option value="False" class="option" selected>One-time fee</option> <option value="True" class="option">Subscription</option> </select> I have model Donate in models.py class Donate(BaseModel): is_recurrent = models.BooleanField(default=False) ... I have form in forms.py class DonateForm(forms.Form): is_recurrent = fields.BooleanField(???) ... How can I pass True into form if subscription is selected and false if one-time fee is selected -
Django + React as ecommerce shop
I have been learning Django and React for some time now. As part of my learning, I've decided to work on building my own store so I don't use Shopper anymore. Can you recommend any ready-made ecommerce framework where I can add React as frontend? -
drf - remove miliseconds from serializers.DateTimeField when sending response
I have to write a serializer that returns datetime in the following formats: 2012-01-01T13:00:00+00:00 (utc_with_timezone) 2020-01-01T09:00:00 (with_out_timezone)but the response that is sent contains miliseconds: 2022-01-01T18:14:05.378897+05:00 class SomeResponse(serializers.Serializer): utc_with_timezone = DateTimeField() with_out_timezone = DateTimeField() How can I manipulate the output format without changing the settings for the whole project? -
Add a Progress Bar on a Django Application
I am currently building a web application using Django, and I need to add a page that shows progress bars for several different processes. For each of the processes, I need the progress bar to update 1% after 1,000 (the number is arbitrary) iterations. I have never used AJAX before, and I am not sure where to look or if there is even a way to implement what I am trying to do. My thought process is that the best way to go about this is to run an asynchronous function in Python and then communicate the progress somehow to the JavaScript which will then update the progress bars. Are there any good resources to figure out something like this? -
Django API After login get information about user
class LoginAPI(KnoxLoginView): permission_classes = [permissions.IsAuthenticated,] def post(self, request, format=None): serializer = AuthTokenSerializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] Organizationss=Organization.objects.filter(owner_id__exact=request.user.id).values('UserInformation') Organizationss_name=[Organization.objects.filter(id=a['UserInformation']).values('name','type') for a in Organizationss] login(request, user) temp_list=super(LoginAPI, self).post(request, format=None) # print([a for a in projects]) temp_list.data["Organization"]=Organizationss_name # print(temp_list.data return Response({"data":temp_list.data}) This is my serializer , when i login it's return this information every users , i want to return only this users which is in Test Organization. i try Organizationss=Organization.objects.filter(owner_id__exact=request.user.id).values('UserInformation') but not working , what is best idea ? "data": { "expiry": "2022-02-24T01:01:07.773585Z", "token": "a6c19c30569a69a42a7cfae665123a4399c09710879d470b0a1f7440f8864691", "Organization": [ [ { "name": "Test", "type": "Test" } ] ] } -
Using same modal to Add/Edit DataTable row content
I've been struggling to get this code working I hope you can help me! I basically have a Django website in which in the page I'm doing right now I have a DataTable with my customers information. I have a button on the top to Add a new Customer and the table rows can be clicked to edit the corresponding customer data. In both cases a modal (#clientModal), the same one, is shown. I have almost everything working, since it was working fine when I used multiple pages insted of in-page modals. Everything works as it should, when I click a table row to edit some customer's info the modal form is populated but when I click the form's save button it creates a new object instead of updating the corresponding one. Any help will be appreciated, thanks! -- customerList.html <!-- Clients DataTable --> <div class="card shadow mb-4"> <div class="card-body"> <form action="{% url 'CustomerBulkAction'%}" method="POST">{% csrf_token %} <div class="table-responsive"> <table class="table table-bordered" id="customerTable" width="100%" cellspacing="0"> <thead> <tr> <th data-orderable="false"> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="checkAll" value="option1"> <label class="form-check-label" for="checkAll">Selecionar Todos</label> </div> </th> <th>Nome</th> <th>NIF</th> <th>Por pagar</th> <th>Pago</th> </tr> </thead> <tbody> {% for c in customers %} <tr class='clickable-row' data-pid='{{c.id}}'> … -
Passing "context" back to view Django
I'm using an API (Spotify) to receive search results (Playlists and their data....Name,Url,Owner,Description) and displaying them on my website. I could just directly print out the results to the website in an HTML table, however I need to perform Regex to get values out of the description(Email or Instagram if provided). I created a PlaylistObject class to store each returned playlist result, as well as my regexs to find an email and username. I do not store this value in the database because it's temporary and doesn't need to be saved for long term. The problem I am having is with Pagination. The way I have the program set up, it has to recall the Spotify API function call that gets the search and assigns it to my list of PlaylistObjects every single time the page reloads. Because of pagination, it reloads every time the page is changed. The pagination is working and the program functions "as intended", but I know there has to be a better approach. I send the list of playlists through context dictionary and then read them in the html to a table, if the was a way to send that same exact playlist list back … -
django anchor app based html to project based html
I have a base.html file in my project/templates file and I try to anchor link an app based html file to it. I get the following error: Reverse for 'tcm_home' not found. 'tcm:tcm_home' is not a valid view function or pattern name. The tcm_home.html file is my "tcm" app html and inherits from base.html file What I did/tried: named my_app = 'tcm' in my urls.py file in tcm app linked my project based templates directory to BASE_DIR checked if the tcm-home.html (app based) inherits from base.html (project based) {% load static %} <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" type="image/png" href="{% static 'tcm/cover.png' %}" /> <title>HEAT TRANSFER SITE</title> </head> <body style="background-color: aqua;"> <h1 style=" color:darkblue">THIS IS IT!</h1> <h1><a href="{% url 'tcm:tcm_home' %}"></a>goto TCM</h1> {% block content %} {% endblock %} </body> </html> -
Django does not run when the django-admin code is entered
When I try to run the program, the following code runs: DNS server not authoritative for zone. -
Prevent django from replacing quote marks with html
I have a django form like which displays a number of radiobuttons and I need to submit a request on click. The needs to be submited on click, but since there is a second jQuery widget, I'm trying to extract its current value on submit to package along with the request. When trying to extract the value from the additional widget django replaces quote marks in attrs with html characters which prevents it from working. I have tried enclosing the form and additional widget in {% autoescape off %} tags, as well as rendering the form manually and using safe i.e. {{ field|safe }}. However django continues to automatically replace quotes. How can I stop this from happening? class ChloroplethIonSelectForm(forms.Form): choices = [ (str(i)+'_'+str(j),'mz ='+ str(i)+ 'rt = '+str(j)) for i, j in Data.objects.all().distinct('mz').values_list('mz',"rt_min" )] ion = forms.CharField(label = "Select an ion and a date", widget=forms.RadioSelect( choices = choices,attrs={'onclick': "$('#id_date') = $('#amount').val(); this.form.submit();"} )) date = forms.CharField(max_length=10, widget = forms.HiddenInput()) formtype = forms.CharField(initial = 'chloroplethion', widget=forms.HiddenInput()) <form action="" method="post"> {% autoescape off %} {% csrf_token %} <p> <label for="amount">Date range:</label> <input type="text" id="amount" style="border: 0; color: #f6931f; font-weight: bold;" size="10" /> </p> {% block choropleth_sliders %} {% endblock choropleth_sliders %} … -
Django Como gerar Lorem Ipsum por view [Dica]
Como gerar Lorem Ipsum por View no Django Tutorial de como gerar Lorem Ipsum por View no Django -
DjangoModelPermissions ignore my added permissions
I have a problem with DjangoModelPermissions. It works fine with standard permissions but not with permissions I added to the Meta of my model. Example: class MarketingImage(MarketingMediaAbstract): image = models.ImageField(_('Marketing image'), upload_to="marketing/images/") machine = models.ForeignKey("machine.Machine", verbose_name = _("machine"), related_name="marketing_image_machine", on_delete=models.CASCADE) class Meta: verbose_name = _("Marketing Image") verbose_name_plural = _("Marketing Images") permissions = [('change_marketingmedia', 'Can change Marketing Media'), ('delete_marketingmedia', 'Can delete Marketing Media'), ('add_marketingmedia', 'Can add Marketing Media'), ('view_marketingmedia', 'Can view Marketing Media')] When I migrated this object, 4 permissions were created: view_marketingimage add_marketingimage change_marketingimage delete_marketingimage When I use permission_classes = [DjangoModelPermission], it's works with *_marketingimage but not with *_marketingmedia *_marketingmedia are ignored. How do I get DjangoModelPermission to work with the permissions I added? -
Django template detailed view of object
I am wondering how to do so that after creating a new object, a page with the details of the given object is automatically created. Of course, the page according to the template. I have a list of objects owned by the user and a "details" button next to each object. I would like this button to take you to the details page of this object.