Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to add background image through css in django?
How to get the path to work so it shows the background image through css? If it could be done with a relative path then how? /*mobile view*/ .index-banner { background: url('static/mysite/images/home.svg') no-repeat; background-position: center; background-size: cover; width: 100%; height: 380px; } {% block content %} <section class="index-banner"> <h2>Test<br>Condiitons</h2> <h1>lorel ipsum</h1> <h1>sdfjls upueh ndsfoi bbownl</h1> <img src="{% static 'mysite/images/home.svg' %}" class="mysite-img" style="display: none;"> </section> {% endblock %} -
Django CMS Carousel
I am learning/developing my company website. and I really don't know how to add the correct plug-ins on this Carousel that I have and also integrate with all the translations. But static code bellow works fine, but I would like to convert that to the django-cms plugin format <header> <div class="container-fluid"> <div class="slider-container"> <div class="owl-slider owl-carousel"> <div class="item"> <div class="owl-slider-item"> <img src="{% static 'home/images/slide-1.png' %}" class="img-responsive" alt="portfolio"> <div class="intro-text"> <div class="intro-lead-in">Text1 Lead</div> <div class="intro-heading">Text1 Heading</div> </div> </div> </div> <div class="item"> <div class="owl-slider-item"> <img src="{% static 'home/images/slide-2.png' %}" class="img-responsive" alt="portfolio"> <div class="intro-text"> <div class="intro-lead-in">Text2 Lead</div> <div class="intro-heading">Text2 Heading</div> </div> </div> </div> <div class="item"> <div class="owl-slider-item"> <img src="{% static 'home/images/slide-3.png' %}" class="img-responsive" alt="portfolio"> <div class="intro-text"> <div class="intro-lead-in">Text3 Lead</div> <div class="intro-heading">Text3 Heading</div> </div> </div> </div> </div> </div> </div> </header> -
user=User.objects.get_or_create(first_name=fk_first_name,last_name=fk_last_name,email=fk_email)[0] why [0] is used
in this python code which is creating fake name with email : from faker import Faker from .models import User fk=Faker() def populate(N=5): for entry in range(N): fk_name=fk.name().split() fk_first_name=fk_name[0] fk_last_name=fk_last[1] fk_email=fk.email() user=User.objects.get_or_create(first_name=fk_first_name,last_name=fk_last_name,email=fk_email)[0] if __name__=='__main__': inp=int(input("please enter the integer value for population")) print('Populating ......................') populate(inp) print("population is done \n") in this user=User.objects.get_or_create(first_name=fk_first_name,last_name=fk_last_name,email=fk_email)[0] why [0] is used -
Pillow is not installing in Django when I creating a new Project
[ error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe' failed with exit status 2 ] When I created my first project Pip install pillow installed successfully but when I created a new project then pip install pillow was showing this error. I don't know what is happening with this. -
share dynamic object (not stored in DB) between views Django
my views.py from django.shortcuts import render from django.http import JsonResponse from home_page.models import UploadNet from home_page.forms import NetForm, ConfigForm from backend.NetListBuilder import NetListBuilder from backend.ConfigBuilder import ConfigBuilder def set_configuration(request, net_file=None): if "upload_net" in request.POST: net_path = os.path.join("media/net_files", net_file.name) netlist = NetListBuilder(net_path) config = ConfigBuilder(netlist) context = {'config': config,} return render(request,'configuration.html', context=context,) return render(request,'configuration.html', {'net_file': None},) def save_config(request): if request.is_ajax(): response_data = {} json_data = {} json_data = request.POST['json_data']: response_data["result"] = "save file" return JsonResponse(response_data) context = {'net_file': None} return render(request, 'rules_list.html', context=context) I want to share netlist and config objects (without saving them in DB) in rules_list view. how can i do that? should i pass them into configuration.html file? -
Mutiple bokeh Charts in django template
I don't understand how I can set up several Bokeh Chart in my django template. I have read this page https://docs.bokeh.org/en/latest/docs/user_guide/embed.html which supposed to explain this but it is not clear at all. Here is my view : def Bokehplot(request): source = ColumnDataSource(S.df) p = figure(x_axis_type = "datetime", title = "un truc", x_axis_label = "date" , y_axis_label = "autre truc") p.line("date", "Te", source = source, line_width = 2,color = "green", alpha = 0.6) q = figure(x_axis_type = "datetime", title = "un truc", x_axis_label = "date" , y_axis_label = "autre truc") q.line("date", "Tr", source = source, line_width = 2,color = "red", alpha = 0.6) plots = {'Red': p, 'Blue': q} script, div = components(plots) return render(request, 'batterie/results.html', locals()) {{div|safe}} gives the 2 divs on a row. I would like to access div1 (first graph) and div2 (second graph) in order to put them in 2 different bootstrap columns ? Any help is welcome. Thanks! -
Django queryset join tables
I am really stuck with merging two tables. I have tables Item and Transactions class Item(models.Model): category_choices = [] item_id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) description = models.TextField() category = models.CharField(max_length=100, choices=category_choices) image = models.ImageField(upload_to='media') stock = models.IntegerField() price = models.DecimalField(max_digits=10, decimal_places=2) date_added = models.DateTimeField(default=timezone.now()) class Transactions(models.Model): transaction_id = models.AutoField(primary_key=True) order_id = models.UUIDField() item_id = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='transactions') quantity = models.IntegerField() price = models.DecimalField(max_digits=10, decimal_places=2) transaction_date = models.DateTimeField(auto_now_add=True) username = models.CharField(max_length=100) first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) address_str = models.CharField(max_length=100) address_plz = models.CharField(max_length=100) address_place = models.CharField(max_length=100) address_country = models.CharField(max_length=100, choices=[(name[1], name[1]) for name in countries]) Now I want to render template with transactions and images and items info from Item model. I am trying to use prefetch_related, howeve rit does not work and I do not understand how this should be solved. def order_history(request): if request.user.is_authenticated: transaction = Transactions.objects.order_by('-transaction_date').\ filter(username=request.user).prefetch_related('item') context = {'orders': transaction} template_name = 'retail/order_history.html' return render(request, template_name, context=context) else: raise Http404('You are not authorised') -
Completely stuck, Cannot resolve keyword 'user' into field Django
So, I'm completely stuck. I have been stuck on this for days now. I'm not sure exactly what's going on here, as I'm totally new to django. I've read over the docs, and I've looked up things on here, but there's not much. I'm basically trying to having profiles display on a page that I've already created. I'm using a custom user model. Would truly appreciate some help. And the thing is, I was suggested to simply take out 'user' in 'user=request.user, but problem is if I do that, than I get 'Profile' is not iterable. error at line 'description = Profile.objects.get(user=request.user).description' : FieldError at /mingle/ Cannot resolve keyword 'user' into field. Choices are: date_joined, description, email, given_vote, id, is_active, is_admin, is_staff, is_superuser, last_login, logentry, matches, password, photo, username, uservote Request Method: GET Request URL: http://localhost:8000/mingle/ Django Version: 2.2.3 Exception Type: FieldError Exception Value: Cannot resolve keyword 'user' into field. Choices are: date_joined, description, email, given_vote, id, is_active, is_admin, is_staff, is_superuser, last_login, logentry, matches, password, photo, username, uservote Exception Location: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/sql/query.py in names_to_path, line 1420 Python Executable: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3 Python Version: 3.7.3 Python Path: ['/Users/papichulo/Documents/DatingAppCustom', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/papichulo/Library/Python/3.7/lib/python/site-packages', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'] Server time: Sun, 5 Apr 2020 19:20:01 +0000 views.py def mingle(request): … -
AJAX and Django with Javascript
I trying to work on ajax and django. but its not working and i dont know where i went wrong function hr(){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { hrr(this); } }; xhttp.open("GET","{% url 'sc' %}"); xhttp.send(); } function hrr(xml) { var i; var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("object"); var table=""; for (i = 0; i <x.length; i++) { table +=x[i].getElementsByName("search_name")[0].childNodes[0].nodeValue + "<br>" ; } document.getElementById("disp").innerHTML = table; } <button onclick="hr()"> hr</button> <div id="disp">h</div> url.py path("search-car", views.search_car, name='sc'), views.py def search_car(request): scn=Car.objects.filter(search_name__icontains='au') data = serializers.serialize("xml", scn) return HttpResponse(data,status_code=200) xml file This XML file does not appear to have any style information associated with it. The document tree is shown below. <django-objects version="1.0"> <object model="pages.car" pk="1"> <field name="name" type="CharField">Audi</field> <field name="name2" type="CharField">Q7</field> <field name="search_name" type="CharField">Audi Q7</field> </object> </django-objects> Please let me know where i went wrong -
Show Database Items related to user logged (Django)
In my website when a User log in he's redirected to his profile page. Now I'd like to see all the items he stored in the database. How could I do? Thanks Here's the views.py. This is the page the user is redirected to after the login class userView(TemplateView): template_name = 'search/user.html' Html file: <div class="add"> <div class="posted"> {% if objects_list %} {% for o in objects_list %} <div class="container_band"> <div class=album_band> <!-- insert an image --> <img src= "" width="100%"> </div> <div class="info_band"> <!-- insert table info --> <table> <tr><th><h2>{{o.band}}</h2></th></tr> <tr><td> Anno: </td><td> {{o.anno}} </td></tr> <tr><td> Disco: </td><td> {{o.disco}} </td></tr> <tr><td> Etichetta: </td><td> {{o.etichetta_d}} </td></tr> <tr><td> Matrice: </td><td> {{o.matrice}} </td></tr> </table> </div> </div> {% endfor %} {% endif %} </div> models.py class Info(models.Model): utente = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=1) band = models.CharField(max_length=200) disco = models.CharField(max_length=200) etichetta_p = models.CharField(max_length=200) etichetta_d = models.CharField(max_length=200) matrice = models.CharField(max_length=200) anno = models.PositiveIntegerField(default=0) cover = models.ImageField(upload_to='images/', blank=True) def __str__(self): return self.band class Meta: verbose_name_plural = "Info" ordering = ['anno'] -
'utf-8' codec can't decode byte - Python
My Django application is working with both .txt and .doc filetypes. And this application open file, compares it with other files in db and prints out some report. Now the problem is that, when file type is .txt, I get 'utf-8' codec can't decode byte error (here I'm using encoding='utf-8'. When I switch encoding='utf-8' to encoding='ISO-8859-1' error changes to 'latin-1' codec can't decode byte. I want to find such encoding format that work with every type of file. This is my a little part of my function: views.py: @login_required(login_url='sign_in') def result(request): last_uploaded = OriginalDocument.objects.latest('id') original = open(str(last_uploaded.document), 'r') original_words = original.read().lower().split() words_count = len(original_words) open_original = open(str(last_uploaded.document), "r") read_original = open_original.read() report_fives = open("static/report_documents/" + str(last_uploaded.student_name) + "-" + str(last_uploaded.document_title) + "-5.txt", 'w') # Path to the documents with which original doc is comparing path = 'static/other_documents/doc*.txt' files = glob.glob(path) rows, found_count, fives_count, rounded_percentage_five, percentage_for_chart_five, fives_for_report, founded_docs_for_report = search_by_five(last_uploaded, 5, original_words, report_fives, files) context = { ... } return render(request, 'result.html', context) -
No path found on Django Channels
I created a simple consumer on my Django channels application, but when i try to connect to the websocket from my frontend, i keep getting the following error: ws_protocol: ERROR - [Failure instance: Traceback: <class 'ValueError'>: No route found for path 'messages/127.0.0.1:8000/messages/'. Here is my routing: myapp>routing.py from .consumers import EchoConsumer websocket_urlpatterns = [ path("messages/", EchoConsumer), ] mysite>routing.py # mysite/routing.py from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter import myapp.routing application = ProtocolTypeRouter({ # (http->django views is added by default) 'websocket': AuthMiddlewareStack( URLRouter( myapp.routing.websocket_urlpatterns ) ), }) And here is how i'm trying to connect to the websocket from my frontend: var wsStart = 'ws://' + window.location.host + window.location.pathname Can anyone help me find what i'm doing wrong, please? -
Passing parameters using action tag in HTML
I'm working with Tornado (python), and my handlers are in this format. class Application(tornado.web.Application): def __init__(self): handlers = [ url(r'/', MainHandler, name="main_handler"), url(r'/user', UserHandler, name="user_handler"), url(r'/users', UserListHandler, name="user_list_handler"), url(r'/profile/(?P<username>\w+)', UserProfileHandler, name="user_profile_handler"), ] settings = dict( template_path = os.path.join(os.path.dirname(__file__), "templates"), static_path = os.path.join(os.path.dirname(__file__),"static"), debug = True) self.db = client['user_db'] super().__init__(handlers, **settings) My HTML code on the landing page is <h1>INFO DB</h1> <p>Search via username...</p> <form method="get" action="{% url 'user_profile_handler' find_username %}"> <p>Enter Username<br> <input rows=1 cols=20 name="find_username"></p> <input type="submit"> </form> <br> Now my aim is when I click on the submit button, I'm redirected to the page '/profile/{username} Eg: if the username in the search bar is 'abcd', I should be redirected to /profile/abcd on pressing submit. What to put in the action attribute of the form tag in HTML? -
Django Rest Framework is serializing an object two different ways using the same serializer
When using a DRF ViewSet and an APIView, I get two different results for serialization of a DurationField. At the first endpoint host/app/items, which corresponds to the viewset Items and lists all of the created items, I get this response: [ { "id": 2, "duration": "604800.0", ... } ... ] The response from host/app/user_data includes the items corresponding to the item instances which have a relation to the profile: { ... "items": [ { "item": { "id": 2, "duration": "P7DT00H00M00S", ... } ... } ] } But the duration is in the ISO 8601 duration format. This was very perplexing, because the endpoints use the same serializer. I confirmed this by forcing the serializing with duration = serializers.DurationField() in ItemSerializer. I want the same format, in seconds. What can I do? These are issues I found while researching this issue: https://github.com/encode/django-rest-framework/issues/4430 https://github.com/encode/django-rest-framework/issues/4665 Urls: router = routers.DefaultRouter() router.register(r'items', views.Items) urlpatterns = [ path('', include(router.urls)), path('user_data', views.UserData.as_view(), name='user_data'), ... ] Views: class Items(viewsets.ModelViewSet): queryset = Item.objects.all() serializer_class = ItemSerializer def get_permissions(self): if self.action in ('list', 'retrieve'): permission_classes = [AllowAny] else: permission_classes = [IsAdminUser] return [permission() for permission in permission_classes] class UserData(APIView): """Get authenticated user's information: data related to models User and Profile""" … -
View Flow and Django Guardian
I am relatively new to django-guardian and django-viewflow , am still trying to wrap my head around things. Recently i have been attempting to implement a workflow system to get approvals on certain documents. As such i have chosen view flow workflow engine. The workflow that i have been tasked on developing is actually pretty simple and linear. However , at every check point , there must be a different person with a specialized role to verify the documents. There is 4 roles, 1 the preparer , 2 the verifier , 3 the treasury and 4 the Director. As i can't have someone verifying for the Director himself , there is a need for a role based user control. As such , i have adopted django guardian to do this job. Here is some of my code to demonstrate how i did it : Flows.py class Pipeline(Flow): process_class = PaymentVoucherProcess lock_impl = lock.select_for_update_lock #process starts here start = flow.Start( CreateProcessView, fields=["paymentVoucher"], task_title="Processing New Voucher" ).Permission("can_start_voucher", auto_create=True ).Next(this.documents) #preparer will upload supporting documents documents = flow.View( UploadView, task_title="Receiving Supporting Documents" ).Permission("preparer", auto_create=True ).Next(this.preparer) #i wont go in detail as it isn't relevant Models.py this is where i defined my permissions , … -
How to deal with large amounts of data from django based IOT projects
I'm working on a django IOT related dashboard style project. I have a question related to the scale of the project. Let's say that there are 30 or more raspberry pi's or ardunios and you want to get the location and some other data off of them and store it in a database. How would one go about designing a database for a system at such a large scale. -
Compare two tables in Django
I am displaying data from Table1 in my template as seen below, I recently created another model called Table2 which contains data which I would like to display in my table as well. I need to check if the code in Table1 exists in Table2, and if so, grab the var1 and var2 from Table2 and display it in my template. Does anyone know how to do this the best way? Pseudocode If `code` In Table1 Exists In Table2 Get var1, var2 From Table2 My template {% for data in info %} <tr> <td>{{ data.created }}</td> <td>{{ data.publisher }}</td> <td>{{ data.person }}</td> <td>{{ data.code }}</td> </tr> {% endfor %} My view def home(request): info = Table1.objects.all()[:20] return render(request, 'app/home.html', {'info':info}) My models.py class Table1(models.Model): created = models.DateTimeField(default=None) publisher = models.CharField(max_length=50, default=None) person = models.CharField(max_length=50, default=None) code = models.CharField(max_length=25, default=None) class Meta: db_table = 'Table1' unique_together = (("publisher", "person", "code"),) def __str__(self): return self.created class Table2(models.Model): code = models.CharField(max_length=30, default=None, null=True) url = models.CharField(max_length=100, default=None, null=True) var1 = models.CharField(max_length=50, default=None, null=True) var2 = models.CharField(max_length=50, default=None, null=True) def __str__(self): return self.code -
Cannot register more than two classes in the Django admin
I am trying to register three classes to the admin. If I pass two classes it works perfectly but when I add the third I get the following error. I tried to pass three of then separately and that didn't work too. This is the my Django admin.py file: from django.contrib import admin from .models import Sensor from leaflet.admin import LeafletGeoAdmin from import_export.admin import ImportExportModelAdmin class Sensor_admin(LeafletGeoAdmin): list_display = ('subsystem', 'datasheet') class Sensor_io_Admin(ImportExportModelAdmin): pass admin.site.register(Sensor, Sensor_io_Admin, Sensor_admin) This is the error I got: TypeError: register() takes from 2 to 3 positional arguments but 4 were given What can be the way around it? I am using Django 2.1 version. -
Why is my EC2 instance is returning 400 error
I have deployed a Django website on AWS Elastic Beanstalk - the environment is green and website available via the url provided. However, I have set an application load balancer with the EC2 instance of the ELB application as the target group, and this is returning Bad Request (400). When trying to access the instance via the public DNS I get the same Bad Request (400). I have checked the security groups and all required ports (80 for http, 443 for https and 22 for ssh) are open on the instances security group and the target groups security group. I am unsure what else could be causing this as the django app is available and the instance has status running and I can ssh into it. Have checked the AWS docs and other similar questions on SO but can't find any possible solutions. -
Using Camelot to work on an opened pdf file (io.BytesIO object)
I am trying to read tables from a pdf uploaded by a user in Django and I get the uploaded file by request.FILES. I use camelot.read_pdf but it only seems to take a path to the pdf. Can not camelot work with a '_up.BytesIO' object and read a file without specifying a path but only through an already open file?(Like PyPDF2) -
Django ERROR with tmeplate rendering. Reverse for 'login' not found. 'login' is not a valid view function or pattern name
Im new to Django (also to stackoverflow too) and im trying to make simple accounts system. When im "sign out" button to main page im getting this error Reverse for 'logout' not found. 'logout' is not a valid view function or pattern name. account/views.py def signout_view(request): if request.method == 'POST': logout(request) return redirect('/') account/urls.py app_name = 'account' urlpatterns = [ path('signup/', views.signup_view, name='signup'), path('signin/', views.signin_view, name='signin'), path('signout/', views.signout_view, name='signout'), ] home/templates/home/wrapper.html <form class="logout-link" action="{% url 'account:logout' %}" method="post"> {% csrf_token %} <button type="submit">Sign out</button> </form> anyone can help with fixing this problem? -
Django rest framework, difficulty understanding foreign Key field serialization
I'm trying to learn the relations in the Django rest framework and the serializer's job in then. I have the following model: from django.db import models class Point(models.Model): Latitude = models.FloatField(verbose_name="Latitude", blank=False) Longitude = models.FloatField(verbose_name="Longitude", blank=False) elevation = models.FloatField(verbose_name='Location Elevation', blank=False, default=1) class Location(models.Model): location_name = models.TextField(unique=True, blank=False, verbose_name="Location Name") location_coordinates = models.ForeignKey(Point, on_delete=models.CASCADE, verbose_name='Latitude & Longitude') class Meta: unique_together = ['location_name', 'location_coordinates'] get_latest_by = 'date_added' def __str__(self): return f'{self.location_name},{self.location_coordinates}' And, this serializer: from rest_framework import serializers from .models import Location class LocationSerializer(serializers.ModelSerializer): location_name = serializers.RelatedField(many=True, read_only=True) def to_representation(self, instance): representation = super().to_representation(instance) print(representation) return representation class Meta: model = Location fields = ['location_name'] Now, I'm trying to access the serialized data, so I can run my logic on it and return the response in the view. when trying to access serialized data in the shell, I get the following error: >>> from LocationModel.serializers import LocationSerializer >>> from LocationModel.models import Locations >>> from LocationModel.models import Location >>> queryset = Location.objects.all() >>> serialized_data = LocationSerializer(data,many=False) >>> print(serialized_data) LocationSerializer(<Location: yovel,Point object (1)>): >>> serailizer.to_representation(data) AttributeError: 'LocationSerializer' object has no attribute 'location_name' The framework's docs kind of jump into deep water in this topic (at least for me) So, I have two questions: … -
Forcing a user to upload an image during registration Django
I've extended my user model with profile, and have made it so that a profile object gets made when user does. Now, I am trying to add my own fields during registration, description and photo. However, I am having trouble doing that. Error: AttributeError at /register/ type object 'Profile' has no attribute 'USERNAME_FIELD' Request Method: GET Request URL: http://localhost:8000/register/ Django Version: 3.0.5 Exception Type: AttributeError Exception Value: type object 'Profile' has no attribute 'USERNAME_FIELD' Exception Location: /Users/papichulo/Documents/DatingApp/11_env/lib/python3.7/site-packages/django/contrib/auth/forms.py in __init__, line 109 Python Executable: /Users/papichulo/Documents/DatingApp/11_env/bin/python Python Version: 3.7.3 Python Path: ['/Users/papichulo/Documents/DatingApp', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/papichulo/Documents/DatingApp/11_env/lib/python3.7/site-packages'] views.py def register(request): form1 = UserForm(prefix="user") form2 = ProfileForm(prefix="profile") if request.method == "POST": form1 = UserForm(request.POST, prefix="user") form2 = ProfileForm(request.POST,request.FILES, prefix="profile") if form1.is_valid() and form2.is_valid(): # Save form1 with no commit user = form1.save(commit=False) user.username = form1.cleaned_data['username'] user.email = form1.cleaned_data['email'] # user.email = form1.cleaned_data['email'] user.save() user.profile.user = user user.profile.description = form2.cleaned_data['description'] user.profile.photo = form2.cleaned_data['photo'] user.profile.save() # Some return statement you choose return redirect('dating_app:home') # *** return render(request, 'dating_app/register.html', {"form1": form1, "form2": form2}) models.py from django.contrib.auth.models import User from django.db import models from dating_project import settings from django.db.models.signals import post_save from django.dispatch import receiver class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) photo = models.ImageField(upload_to='profile_photo',blank=False, height_field=None, width_field=None, max_length=100) description … -
How to use filter_horizontal in non m2m fields?
I have a model which is a MultipleChoiceField it needs to be populated with the attributes from another model, however, I'd like to have that turned into a filter_horizontal-esk field. As you can tell it's not a M2M relation hence I can't use filter_horizontal there. Is there anyway I can override the change_form.html and serve custom HTML with this. I wouldn't mind a JS based solution as well. I am able to send the data (the attributes of other model) using render_change_form method. models.py class MyModel(models.Model): choice_field = models.CharField() forms.py class MyModelForm(forms.ModelForm): choices = (('adqt_homescreen_id', 'adqt_homescreen_id'), ('entity_name', 'entity_name'), ('display_name', 'display_name'), ('image', 'image'), ('category', 'category'), ('cat_order', 'cat_order'), ) choice_field = forms.MultipleChoiceField(choices=choices) admin.py class MyModelAdmin(admin.ModelAdmin): change_form_template = 'mychangeform.html' class Media: js = ('myjs.js', ) def render_change_form(self, request, context, *args, **kwargs): field_list = list() for i in AdqtHomescreen._meta.get_fields(): if hasattr(i, 'attname'): field_list.append(i.attname) elif hasattr(i, 'field_name'): field_list.append(i.field_name) extra_context = field_list context.update({'filterFields': field_list}) return super(DqRulesConfigAdmin, self).render_change_form(request, context, *args, **kwargs) mychangeform.html {% extends "admin/change_form.html" %} {% block after_field_sets %}{{ block.super }} <p id="filterFields">{{filterFields}}</p> {% endblock %} -
vue JS get too much responses from django channles
I'm writing backend using Django channels and my friend that does Frontend get a bug when I send him response using group_send every user receives as many answers as users are in the group. class RoomChatConsumer(WebsocketConsumer): def connect(self): self.accept() def disconnect(self, close_code): try: async_to_sync(self.channel_layer.group_discard)(self.room_name+'chat', self.channel_name) except AttributeError: pass self.room.chat.users.remove(self.user) message = { "response": 'User has disconnected', 'username': self.user.username, 'timestamp': str(datetime.now().strftime("%d.%m.%y %H:%M")), } async_to_sync(self.channel_layer.group_send)( self.room_name+'chat', { 'type': 'send_users', 'data': message, } ) def receive(self, text_data): text_data_json = json.loads(text_data) if 'type' in text_data_json.keys() and text_data_json['type'] == 'authenticate': token = text_data_json['payload']['token'] self.user = Token.objects.filter(key=token).first().user self.room_name = self.scope['path'].split('/')[5] self.room = Room.objects.filter(name=self.room_name).first() async_to_sync(self.channel_layer.group_add)(self.room_name+'chat', self.channel_name) self.users_in_room = self.room.users.all() for msg in self.room.chat.last_messages( self.room.chat.messages_on_connect_count ): self.send(text_data=json.dumps({ 'response': 'new message', 'message': msg.content, 'username': msg.author.username, 'timestamp': msg.timestamp.strftime("%d.%m.%y %H:%M"), 'receivers': msg.get_receivers() })) self.room.chat.users.add(self.user) print(f'{self.user.username} connected') message = { "response": 'User is successfully connected', 'username': self.user.username, 'timestamp': str(datetime.now().strftime("%d.%m.%y %H:%M")), } async_to_sync(self.channel_layer.group_send)( self.room_name+'chat', { 'type': 'send_users', 'data': message, } ) elif text_data_json['request'] == 'new message': print('new message') recievers = [] usernames_in_room = [] for user in self.users_in_room: usernames_in_room.append(user.username) for part in text_data_json['message'].split(): if part[0] == '@': if part[1:] in usernames_in_room: user = self.users_in_room.filter(username=part[1:]).first() if user and user != self.user: recievers.append(user) message = Message.objects.create( author=self.user, content=text_data_json['message'], ) message.receivers.set(recievers) message.save() self.room.chat.messages.add(message) message = { …