Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Python await outside async function
I'm trying to send data to my client from a Django channels consumer. I tried the following code: class EchoConsumer(AsyncJsonWebsocketConsumer): async def connect(self): await self.accept() await self.send_json('test') def process_message(message): JSON1 = json.dumps(message) JSON2 = json.loads(JSON1) #define variables Rate = JSON2['p'] Quantity = JSON2['q'] Symbol = JSON2['s'] Order = JSON2['m'] print(Rate) await self.send_json(Rate) bm = BinanceSocketManager(client) bm.start_trade_socket('BNBBTC', process_message) bm.start() The problem with my actual code is that i'm getting the following error: SyntaxError: 'await' outside async function I think this happens because i'm using await inside a synchronous function, which is process_message(). I doon't know how to send the variable Rate in any other way. Is there a workaround? Can someone help me fix this issue? -
Django query extended user model for authentication
I have an issue with authentication in django with an extended user model. I want the user to authenticate with a customer number, a username and a password. This are my models: class Mandant(models.Model): Mandant_id = models.AutoField('ID', primary_key= True) Mandant_accn= models.CharField('Kundennummer', max_length=10) Mandant_name = models.CharField('Bezeichnung', max_length=200) Mandant_street = models.CharField('Straße', max_length=200, null=True, blank=True) Mandant_zip = models.CharField('PLZ', max_length=10, null=True, blank=True) Mandant_city = models.CharField('Ort', max_length=200, null=True, blank=True) Mandant_iban = models.CharField('IBAN', max_length=200, null=True, blank=True) Mandant_bic = models.CharField('BIC', max_length=200, null=True, blank=True) Mandant_ustid = models.CharField('UstID', max_length=200, null=True, blank=True) Mandant_vf = models.DateTimeField('Gültig von', default=now) Mandant_vu = models.DateTimeField('Gültig bis', null=True, blank=True) Mandant_ia = models.DateTimeField('Hinzugefügt am', auto_now=True) Mandant_deleted = models.BooleanField('Gelöscht', default=False) def __str__(self): return self.Mandant_name class Meta: app_label ="meas" ordering = ['Mandant_ia'] class Meas_User(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) mandant_id = models.ForeignKey(Mandant, on_delete=models.CASCADE) I extended the django default user model with an onetoonefield in my Meas_User model. Now I tried to write a login view for my app users. But I dont get how to do a query like the in the following SQL statement SELECT User, Mandant FROM [User] INNER JOIN (Mandant INNER JOIN MEAS_user ON Mandant.Mandant_ID = MEAS_user.Mandant_ID) ON User.ID = MEAS_user.user_ID WHERE (((User.username)="lorem Ipsum") AND ((Mandant.Customer_Number)="1234")); I tried the select_related() function, but without success. My desired result … -
I want a single table-row containing big content to break into pages
I have created a table with rows which displays data fetched from a table. Problem is that when data in table row is large, while printing row gets shifted in next page leaving a big blank space in previous page like this. Blank space on first page and row shifted to next page code i have written in html file is : ''' <table class="table table-light"> <thead> <tr> <th scope="col"></th> <th scope="col"></th> <th scope="col"></th> </tr> </thead> <tbody> {% for que in q_changed_a_lst %} <tr> <td><b><dl></dl><b></td> <td>{{que.question_set}}</div></td> <td>{{que.marks_set}} </td> </tr> {% endif %} {% endfor %} </tbody> </table> ''' and css : <style type="text/css"> table { page-break-inside:auto; } tr { page-break-inside:avoid; page-break-after:auto; } tr td { page-break-inside:avoid;} </style> ul tag works but here I have three columns so I cannot use ul or div tags Please help me so that the row should print part content in previous page and remaining content in next page. Thanks in advance. -
How to keep form input with the same function in 2 different pages
Guys i am new to django and want to learn how to keep the same entry field in 2 different pages. In forms.py: class StudentForm(forms.ModelForm): name = forms.CharField(max_length=150) class Meta: model = Student fields = ['name',] In main.html i have : <form method="POST" > {% csrf_token %} {{ form}} <button class = "btn btn-primary" type="submit">OK</button> </form> In views.py def studinfo(request): form = StudentForm(request.POST or None) if request.method == "POST": if form.is_valid(): form1 = form.save(commit=False) name = form1.name background=Student.objects.get(stud_name=name) context={'profile':background ,} return render(request, 'main/stud_info.html', context) return render(request, 'main/main.html', context={'form':form}) after submitting the form it is directed to stud_info.html where the results are shown based on the input value from the form on main.html. My question is how i can keep the form input in stud_info.html page with the same function as in main.html so that i do not have to return to main.html page to look for a new value? So far i tried simply copying the main.html form into stud_info.html how it only displays OK butoon and nothing. I would appreciate any help and guidance in finding the solution. Thanks in advance. -
How to have a progress bar with uploading a file in Django 3.0.4
This can easily be done with Ajax and Jquery, but this version of Django seems to be making it extra difficult. It requires the '{% csrf_token %}' and that automatically submits the file when submit is pressed. <form id="data_upload" action="/upload" method="POST" enctype="multipart/form-data" class="form-horizontal"> {% csrf_token %} <div class="input-group mb-3"> <div class="custom-file"> <input id="file_select" type="file" class="custom-file-input" id="inputGroupFile02" accept=".csv, .xslx" name="file" /> <label id="submit_label" class="custom-file-label" for="inputGroupFile02" aria-describedby="inputGroupFileAddon02" >Upload CSV or Excel file</label > </div> <div class="input-group-append"> <button id="upload_button" type="submit" class="input-group-text btn" id="inputGroupFileAddon02" disabled > Upload </button> </div> </div> </form> Here is my forum code, very standard. I'm wondering how I can have a progress bar in the front-end. I tried adding ajax to send the file so I could have a progress bar, but it sends an error and it ends up sending the file twice. Once by Django and once by Ajax. -
Can't Insert value in Django foreign key field
I have tried to insert Value in Foreign key fields in django. But It show's me error like this:- Cannot assign "'95'": "Catalog.author_id" must be a "Author" instance. But when I tried to insert with django shell It doesn't show me any error, It's Works fine. Please Help Me I have attached my codes that You can understand well Models.py class Author(models.Model): author_id = models.CharField(max_length=50, primary_key=True) name = models.CharField(max_length=50) city = models.CharField(max_length=50) country = models.CharField(max_length=50) def __str__(self): return str(self.author_id) class Catalog(models.Model): book_id = models.IntegerField(primary_key=True) title = models.CharField(max_length=100) year_of_publish = models.CharField(max_length=5) price = models.IntegerField() author_id = models.ForeignKey('Author', on_delete=models.CASCADE, null=True) def __str__(self): return str(self.book_id) Forms.py class Catalog_Details(forms.ModelForm): book_id = forms.CharField(widget=forms.TextInput( attrs={'class': 'form-control', 'placeholder': 'Enter book id'} ), required=True, max_length=50) title = forms.CharField(widget=forms.TextInput( attrs={'class': 'form-control', 'placeholder': 'Enter title'} ), required=True, max_length=50) year_of_publish = forms.CharField(widget=forms.TextInput( attrs={'class': 'form-control', 'placeholder': 'Enter Published Year'} ), required=True, max_length=5) author_id = forms.ModelChoiceField(queryset=Author.objects.values_list( 'author_id', flat=True)) views.py @login_required def catalog(request): if request.user.is_authenticated: if request.method == 'POST': form = Catalog_Details(request.POST) if form.is_valid(): author_id = form.cleaned_data['author_id'] m = Author.objects.get(author_id=author_id) c1 = Catalog(book_id=form.cleaned_data['book_id'], title=form.cleaned_data['title'], year_of_publish=form.cleaned_data['year_of_publish'],price=form.cleaned_data['price'], author_id=m) c1.save() form = Catalog_Details() else: form = Catalog_Details() return render(request, 'catalog.html', {'form': form}) -
ImageField not accepting vale from html file in DJANGO
I am making a custom CMS platform in Django. I want to upload a featured image from user. Here is my forms.py class CkEditorForm(ModelForm): .......... .......... featuredImage = forms.ImageField(required=True) My models.py class Post(models.Model): .......... .......... featuredImage = models.ImageField(upload_to="featured_image/") My HTML Template <div class="col-sm-6"> {{myForm.featuredImage}} </div> I used one more method in template but it didn't work for me- <input type="file" name="featuredImage" accept="image/*" required id="id_featuredImage"> Note- Image is successfully uploaded via Django admin panel, But not working when I try to upload via Templates (HTML file) Also, it was working when I use this method to render my form in html {{myForms.as_p}} But I want to render each form's input method as differently. {{myForm.category}} {{myForm.tags}} {{myForm.featuredImage}} -
Adding recently searched in Search box for a django website
I'm creating a website using django. And I want to put a search box in my website. So now if an anonymous user comes to my website and search for something and use some data and after sometime leaves the website without signing up.And comes back later and again start searching for the same thing what he was searching earlier then i want my website to show that search as "recently searched" or something like that, for that what should i do?? -
From Python function to Django template
I'm trying to get my head around Django and understand how I can show results of Python functions in Django's templates. As a simple example, let's say I have a model with a list of questions and I want to use a function to return the number of questions and for this result to be shown in a template. How can I do it? I tried to do it below but it doesn't work! Thanks in advance models.py from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) views.py from django.shortcuts import render from django_app import models from django.views.generic import ListView from django_app.models import Question class TestListView(ListView): model = Question context_object_name = 'test_details' def Test(self): return Question.objects.count() urls.py from django.urls import path from django_app import views from django_app.views import TestListView app_name = 'django_app' urlpatterns = [ path('',TestListView.as_view(), name='Test'), ] question_list.html <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> {% for item in test_details %} {{Test}} {{item.question_text}} {% endfor %} </body> </html> -
What is the meaning of this function in django
def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) In a django project i used this function but i do not know why i used this -
How to assign process PK to a foreign key field in viewflow
Hello im trying to build an esignature workflow using viewflow. Im doing so by linking my process model , to an esignature model where i keep the signatures by a foreign key. However , im facing this error. Cannot assign "8": "ESignatureModel.paymentVoucherProcess" must be a "PaymentVoucherProcess" instance. My flows.py class Pipeline(Flow): process_class = PaymentVoucherProcess start = ( flow.Start( CreateProcessView, fields=["payment_code","bPBankAccount"] ).Permission( auto_create=True ).Next(this.approve) ) approve = ( flow.View( Signature, fields=["eSignatureModel"] ).Permission( auto_create=True ).Next(this.check_approve) ) check_approve = ( flow.If(lambda activation: activation.process.eSignatureModel) .Then(this.send) .Else(this.end) ) send = ( flow.Handler( this.send_hello_world_request ).Next(this.end) ) end = flow.End() def send_hello_world_request(self, activation): print(activation.process.payment_code) Here is my models.py class PaymentVoucherProcess(Process): payment_code = models.CharField(max_length=250,default='sup') bPBankAccount = models.ForeignKey('BPBankAccount', on_delete=models.CASCADE) drop_status = models.CharField( null=True, max_length=3, default=None, choices=(('SCF', 'Successful'), ('ERR', 'Unsuccessful')) ) remarks = models.TextField(null=True) class ESignatureModel(JSignatureFieldsMixin): name = models.ForeignKey(User , on_delete=models.CASCADE) paymentVoucherProcess = models.ForeignKey('PaymentVoucherProcess', on_delete=models.CASCADE) Here is my external custom view i used to insert the esignature aspect into my workflow @flow_view def Signature(request): form = SignatureForm(request.POST or None) if form.is_valid(): esig = ESignatureModel() signature = form.cleaned_data.get('signature') if signature: signature_picture = draw_signature(signature) signature_file_path = draw_signature(signature, as_file=True) pk = request.activation.process.pk #attempting to assign the foreign key field error occurs here esig.paymentVoucherProcess = pk form.save() request.activation.done() return redirect(get_next_task_url(request, request.activation.process)) return render(request, 'cash/pipeline/jsig.html', … -
How to save serial number generated after form submission and displayed in django database?
I have created the model as class Personal_Detail(models.Model): message=models.CharField(max_length=100,blank=True, null=True) def __str__(self): return self.beneficiary_aadhaar_name and views as from django.contrib import messages import datetime import random @login_required def personal_detail(request): now=datetime.datetime.now() messages.success(request,now.strftime("SKPMMVY%Y%m%d%H%M%S")+str(random.randint(0,99))+str(":\tYour form has been submitted successfully")) beneficiary_adhaar_name=request.POST.get('beneficiary_adhaar_name') apply_online = Personal_Detail(beneficiary_adhaar_name=beneficiary_adhaar_name) apply_online.save() return render(request,'users/applyonline.html') I don't know how can i do the same for messages so that the displayed serial number after form submission will also get saved in the database.(for messages.success i don't know how to proceed like other cases) -
Apply default_value in Django Model to databases
I have a Django app connected to a MS SQL database. When I create a model, there are fields that will be auto-created or fields that have default value, like the ones below. class PrincipalFlash(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) updated_by = models.CharField(max_length=100, default='sys_admin') However, when I take a look at how the table is created in the database, it looks like below. CREATE TABLE [webapp].[api_principalflash]( [id] [int] IDENTITY(1,1) NOT NULL, [created_at] [datetime2](7) NOT NULL, [updated_at] [datetime2](7) NOT NULL, [updated_by] [nvarchar](100) NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] It's only saying that these field are just NOT NULL without any default value. Hence, when I write data to this table directly (not via Django Rest API), it asks me the values for these fields. Do you guys know how to apply default_value from Django model to the database level? Thanks! -
Using a wiki with django
I have created a basic django site. It's currently in the testing phase. I need to add a wiki to this site, such that clicking a button on the main django site directs me to this wiki. I need the wiki to look similar to wikipedia. Now, wikipedia uses MediaWiki, based on PHP. My site is based on django. I tried installing and running media wiki on my localhost, but got a ton of errors. Maybe this is because I'm on Windows. Is there any other wiki I can use, which is perhaps more django-friendly? I know about 'django-wiki', but it hardly looks like a wiki. I know that this question appears to be too broad, but I just need suggestions and perhaps a starting point. I am on python 3.8.2 and django 3.0.3. -
Best way to code and to connect two models in python
I have created a "quote" app and in my next phase I would like to create a dropdown list with my "contacts". I'm only wondering what is the easiest, and best practices to create another class with the details of the contacts, or creating a new "app" to hold all the details of the contacts. -
Django Rest Framework Admin Site doesn't Load
Whenever I try to run python manage.py runserver and go to the admin site, I lose connection to the server immediately. The API Root page works fine it is just the admin page. The code is based on the Django Rest Framework Quickstart tutorial with the addition of a model, it's serializer and the respective view. All migrations have been made. (venv) ~\Back-End\iBMS>python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). April 04, 2020 - 02:11:20 Django version 3.0.5, using settings 'iBMS.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. (venv) ~\Back-End\iBMS> Here are my code files: #urls.py """iBMS URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.0/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import include, path from rest_framework import routers … -
Django rest framework Post request
I am creating django + react app and i want to pass data by django rest framework. models.py class User(AbstractUser): def __str__(self): return self.username class Address(models.Model): username = models.ForeignKey(User,related_name='address',on_delete=models.CASCADE) street_address = models.CharField(max_length=100) apartment_address = models.CharField(max_length=100) country = CountryField(multiple=False) address_type = models.CharField(max_length=1, choices=ADDRESS_CHOICES) default = models.BooleanField(default=False) class Meta: verbose_name_plural = 'Addresses' def __str__(self): return '%s %s %s %s' % (self.street_address, self.apartment_address, self.country, self.address_type) serializers.py class AddressSerializer(serializers.ModelSerializer): class Meta: model = Address fields = ('street_address','apartment_address','country') class UserSerializer(serializers.ModelSerializer): address = serializers.StringRelatedField(many=True) class Meta: model= User fields = ('email','username','password','address')``` views.py class UserViewSet(viewsets.ModelViewSet): serializer_class=UserSerializer queryset = User.objects.all() class AddressViewSet(APIView): def get(self, request, format=None): address = Address.objects.all() serializer = AddressSerializer(address, many=True) return Response(serializer.data) def post(self, request, format=None): serializer = AddressSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @classmethod def get_extra_actions(cls): return [] My get request looks good because it returns value but it looks like something wrong is with AddressSerializer(data=request.data) -
how to use order by on a field in which value like 10 GB and 10 TB in django queryset
limited_plans = Subscription_plan.objects.filter(plan_type__type__iexact='limited', status='1', connection_type_id='1').annotate( total=Sum(Case(When(validity_type='2', then=ExpressionWrapper(F('validity') * 30, output_field=IntegerField())), When(validity_type='1',then=ExpressionWrapper(F('validity'), output_field=IntegerField())), default=IntegerField())), fup_li=Sum(Case(When(fup_li_sign = 'GB',then=ExpressionWrapper(F('fup_li_value') * 1000, output_field=IntegerField())), When(fup_li_sign = 'TB', then=ExpressionWrapper(F('fup_li_value'), output_field=IntegerField()))), default=IntegerField()) ).extra(select={ 'fup_li_sign': "SUBSTR(fup_limit, 2)", 'fup_li_value': "CAST(substr(fup_limit, 1) AS UNSIGNED)"} ).order_by('total', 'fup_li') -
Django datefield default save format overwriting
I have a postgresql9.6 table which has a char field: 'start_date', and the format like '20200101'. And I created a Django2.0 model: class TestModel(models.Model): start_date = models.DateField('start_date') My admin.py is: class TestAdmin(admin.ModelAdmin): list_display = ('start_date',) admin.site.register(TestModel, TestAdmin) And I also modify settings.py: USE_L10N = False DATE_INPUT_FORMATS = ['%Y%m%d'] DATE_FORMATS = ['%Y%m%d'] So I get the date in web form:'20200101', but when I save the form, shows a error: 'value has an invalid date format. It must be " "in YYYY-MM-DD format.' I know the DateField save the date default use 'YYYY-MM-DD' format, but I need to change it to 'YYYYMMDD' so I can save the consistent data into pg database. So how to overwriting the DateField or Model function to change the default format? -
NoModuleFoundError:No module named learning_logs.urls
I'm learning django with the book "python crash course". After I created the urls.py in learning_logs, it always said the learning_logs.urls couldn't be found. I really don't know why! BTW, it worked yesterday, but today I ran again, and the bug came! enter image description here enter image description here enter image description here enter image description here -
How do I properly link my CommentCreateView to my post_detail view?
I have two models, Post and Comment. My Comment model contains the model Post as a foreign key, which matches each comment to a particular post. I have two views: a post_detail view where I can see a post, and a CommentCreateView to create a comment. I created a comment_new.html template that contains the CommentCreateView form, and included the comment_new.html template into my post_detail.html template. However, the actual form to post the comment in doesn't show up, only the 'Post' button does. Here is a snippet of the template and the HTML rendered. post_detail.html {% include 'comment_new.html' %} comment_new.html <form action="" method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Post</button> </form> HTML Rendered: I think the problem is that the CommentCreateView does not know what Post to be linked to, but I'm not certain, so if you have any suggestions, I'm definitely open to any. My question is, I'm not sure how I can get the primary key of the post, and send the data to the CommentCreateView form so that the comment knows which post it needs to be in. Here are the relevant snippets of my code, below. Thank you! Models.py: class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments') … -
Style for a selectbox CSS and HTML
Somebody just helped me to remove the outline of my selectbox (from my first bootstrap-django project) Now, i wanted to ask for your help to change the border color property of the options box itself, which is blue, and i'm trying to make it yellow. Also, for some reason when the select box has the default value, its border is yellow but after you select one of the options, it becomes darker, and i would like it to be darker from the beggining. Here is my CSS: .selector{ outline:none; position:absolute; border-radius:1rem; margin-left:260px; width:500px; border-color: #C9C9C9; height:35px; font-size: 15px; text-align-last: center; color:#C9C9C9; } .selector:focus{ border-color:#FFD700; box-shadow: 0 0 8px #FFD700; } And my HTML: <div class="div1"> <label for="estado" class="label1"> Estado <select class="selector" id="estado" name="estado" onchange="functionfs()" style="border-color: #C9C9C9; "> <option style="color:black" selected="selected" value="-----">--- Ingrese un valor ---</option> <option value="Activo" style="color:black;">Activo</option> <option value="Inactivo" style="color:black;">Inactivo</option> </select> </label> </div> And my JS: <script type="text/javascript"> var selector = document.getElementById("estado"); function functionfs(valor){ selector.setAttribute("style", "color:black;"); } </script> I will also attach 2 images of the problem itself. As you can see, when i select one of the two states and click it again, it becomes darker. Thanks everyone! -
Change a set to a dictionary - Django Python
I am trying to combine these two views. This is what I have. MenuView is to combine with add_to_menu so that if the if statement returns negative, the menuview portion still runs and displays the menu on my html page. If the if the statement is positive, it still shows the menu, but also adds the entered information into the database. I can only get one or the other to work at a time. When I run this, I get an error telling me it has to be a dictionary and not a set. Views.py: class MenuView(ListView): model = Product template_name = 'mis446/edit-menu.html' context_object_name = 'show_menu' def add_to_menu(request): if request.method == 'POST': if request.POST.get('name') and request.POST.get('price') and request.POST.get('nickname'): post=Product() post.name= request.POST.get('name') post.price= request.POST.get('price') post.slug= request.POST.get('nickname') post.save() model = Product context_object_name = {'show_menu'} return render(request, 'mis446/edit-menu.html', context_object_name) else: model = Product context_object_name = {'show_menu'} return render(request,'mis446/edit-menu.html') -
Django management command not capturing command line arguments
I am trying to run a Django management command with some optional arguments. The relevant code is below. def add_arguments(self, parser): parser.add_argument('--from-date', type=str, help='Some help text') parser.add_argument('--to-date', type=str, help='Some help text') parser.add_argument('--from-type', type=str, help='Some help text') parser.add_argument('--until-type', type=str, help='Some help text') def handle(self, *args, **options): from_date = options.get('from-date') to_date = options.get('to-date') from_type = options.get('from-type') until_type = options.get('until-type') When I try to run the command in the terminal as follows, the arguments aren't being picked up. python manage.py [NAME OF COMMAND] --from-date 2020-04-02 --to-date 2020-04-03 Why is this? Thank you. -
creating a related field, when initiating user, in Django
I have a model like this: class CustomUser(AbstractUser): history = models.TextField(verbose_name="History", max_length=500,default='-') def save(self, **kwargs): super(CustomUser, self).save(**kwargs) self.apayment4thisuser.create(catagory="trial",paid=0,paymenttoken="#") So the idea is to create a default related payment model (apayment4thisuser), when a user is created. This works fine,but the problem is that it will run Save() whenever the user is updates too(obviously). However I need this to be run just once. i.e., only when user signs up and created in the database for the first time. I don't need it when an existing user is updated. What would be the best way to achieve this? Thanks,