Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django mptt DraggableMPTTAdmin and callback on move node
I use DraggableMPTTAdmin in a model of my app. I need to update a field when a node is moved. How can I do it? I can't find a callback or something -
Django foreignkey not set when using an object instance
I bumped into a strange bug this morning and if anyone could explain to me why this fails it would be great. Let say I have two really simple models: class MoMo(models.Model): pass class Objo(models.Model): hef_k = models.ForeignKey(MoMo, null=True, blank=True) When I try to create one of them then adding a foreignkey this way: from foreing_save import models obj = models.Objo() obj.save() obj.hef_k = models.MoMo() obj.hef_k.save() the obj.hef_k seams to exists: obj.hef_k Out[9]: <MoMo: MoMo object> But as soon as I refresh from db or simply get it again it's gone: obj.refresh_from_db() In [12]: obj.hef_k In [13]: obj = Objo.objects.get(pk=obj.pk) obj.hef_k in [14]: Do I miss something ? It seams strange to me and any help on this would be greatly appreciated -
Validate size of list in django drf ListSerializer
How can I validate the (read-only) ListSerializer. In my particular case, I would like to enforce the length of the given iterable. I did the following, it works. However, is it the right place to intercept the data? How can I intercept at the earliest stage? class CustomListSerializer(serializers.ListSerializer): def __init__(self, *args, **kwargs): count = kwargs.pop('count', None) self.count = count super().__init__(*args, **kwargs) def to_representation(self, data): if self.count is not None: if len(data) != self.count: raise serializers.ValidationError("Incorrect list size") -
Django: get model instance from a ModelForm
I have a ModelForm to create/update a particular entity. I need to validate in the form whether an equivalente instance already exists in the database to prevent saving duplicates: class EntityForm(models.ModelForm): def clean(self): if Entity.objects.filter(attr1=self.cleaned_data['attr1'], attr2=self.cleaned_data['attr2']).exists(): raise ValidationError('Entity already exists') But if we are editing an entity, it is obviously going to find itself, therefore throwing a validation error and preventing the form from editing that very instance. I would need to exclude that entry: Entity.objects.filter(...).exclude(id=this_instance.id) How can I get in the ModelForm the instance/id of the model being edited? -
OSError at /app/ Why does such a strange error happen?
I got an error,OSError at /app/ [Errno 63] File name too long: "/Users/xxx/testapp/templates/jinja2/{'items': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’, ‘C: ‘c’, ‘D’: ‘d’}]} . I wanna embed json_dict of json_parse method's result in views.py to index.html. I wrote in views.py like from django.shortcuts import render import json def index(request): f = open('./data/data.json', 'r') json_dict = json.load(f) return render('./index.html',json_dict) I wrote in index.html like <html> <head> <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.js"></script> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.css"> </head> <body> <select id="mainDD" data-placeholder="Choose" class="chzn-select" style="width:600px;"> {% for k, v in json_dict.items %} <option>{{ v }}</option> {% endfor %} </select> </body> </html> json_dict has dictionary of {'items': [{'---': '---' ~~~ .I really cannot understand why I cannot send json_dict to index.html.Am I wrong to use render method?How can I fix this? -
Everything related to everything
I'm trying to put together a system where certain models are all related to each other, and can be modified in each others change form within the admin. An example would be Person A being related to Event A and Event B, and when editing either Event A or Event B you'd be able to see, modify, and order Person A. Initially I did this with one super relations table which I used as a through table. This table consisted of a foreign key to each model type. I then used django admin inlines using this relations table which gave me a solution to my example. This also allowed me to have separate inlines for each model type so it is easy to manage. The problem I'm having though is I can't have Event A directly related to Event B because I'm missing the two Event foreign keys on my relations table. Is there a way to solve the self relations using the super table, or is there another method I should be using? -
Can I replace Celery with Django Channels for task scheduling?
I used Celery in my past projets, and recently read about Django Channels concepts. And after reading Django Channels concepts, it seems it does support background processing / task scheduling. The question is NOT: is Django Channels better for task scheduling than Celery?" (I'm pretty sure the answer is NO) The question is: If I'm sure I need Django Channels for something in my project, and then I need to add task scheduling to this project, how would you determine if I need to use Celery in addition to Channels? -
how to get form name from post request using django?
How to get form name(attribute) from post request using django? I cant image how to resolve this. Please let me know. -
How can I upload the image file by using formdata
I have a problem on my code. I want to upload the image file by using formdata and ajax to the server side python program. But I got django.utils.datastructures.MultiValueDictKeyError: "'image'" error in my server uwsgi.log. I think it may not upload the image file to the server, but I don't understand what is wrong on my code. My client code is the following. // Test if the image is shown -> success document.getElementById("previewimage").src = image var formData = new FormData(); formData.append('filename', image_file_name); formData.append('image', image); $.ajax({ url: HOST_NAME + "user/api/file_uploader/", type: 'POST', timeout: 10000, data: formData, processData: false, contentType: false, }) .done(function (data) { jsondata = JSON.parse(data); alert("File upload completed..."); }) .fail(function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); }) And my server side code is the following. def post(self, request, format=None): outputLogFile("Upload Function is called...") req_file_name = request.data['filename'] req_image = request.FILES['image'] I can get filename from the client when I comment the code of image. Please give me an advice. -
How to generate slug field in the Wagtail CMS?
I use a Wagtail CMS with the Russian language. When I save page, I get slug on Russain. But I need an English slug. I found unidecode package for transliterate Russian to English (for example unidecode(title)). Then I found a "full_clean" method on the Page class where the title is converted into a slug. class Page(six.with_metaclass(PageBase, AbstractPage, index.Indexed, ClusterableModel)): def full_clean(self, *args, **kwargs): if not self.slug: if DJANGO_VERSION >= (1, 9): base_slug = slugify(self.title, allow_unicode=True) else: base_slug = slugify(self.title) if base_slug: self.slug = self._get_autogenerated_slug(base_slug) if not self.draft_title: self.draft_title = self.title super(Page, self).full_clean(*args, **kwargs) I tried to inherit the Page class and change the full_clean method, but I failed. Then I implemented the save method and change slug there. But with this method slug changed each time I save the page. Please tell me is this correct method or is there another way? -
Django: Filtering the Questions
Here's the model, class Question(models.Model): timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) .... class Answer(models.Model): question = models.ForeignKey(Question) timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) How can I filter out those questions which received an answer in last 24 hours. How it can I filter them out? Please help me. Thank You! -
ajax change html tag successfully,but can not be used
I have a html file , purpose is click tag <a class="favorite">,turn to <a ="unfavorite">,then click it again ,it should change back to the original value(<a class="favorite">), part of html code like this: <div class="extra content" extra_id="{{ article.article.id }}"> {% if user.is_authenticated %} {% if collections %} {% if article.article.title in collections %} <a class="unfavorite"> <i class="heart icon"></i> {{article.article.favorite}} </a> {% else %} <a class="favorite"> <i class="empty heart icon"></i> {{article.article.favorite}} </a> {% endif %} {% else %} <a class="favorite"> <i class="empty heart icon"></i> {{article.article.favorite}} </a> {% endif %} {% else %} <a class="favorite"> <i class="empty heart icon"></i> {{article.article.favorite}} </a> {%endif%} <span class="right floated"> <a > <i class="comment icon"></i> {{ article.comments_num }} </a> </span> </div> and part of js code: $(".favorite").bind("click",function(){ var id = $(this).parent('.extra.content').attr('extra_id'); $.ajax({ url:"/api/favorite/", data:{"extra_id":id}, async:false, success:function(result){ if (result.status == 200) { $('[extra_id='+ result.article_id +']').find('a.favorite').attr("class","unfavorite"); $('[extra_id='+ result.article_id +']').find('a.unfavorite').html("<i class='heart icon'></i>"+result.favorite); } if (result.status == 10020){ location.href="accounts/login/"; } }}); }); $(".unfavorite").bind("click",function(){ var id = $(this).parent('.extra.content').attr('extra_id'); $.ajax({ url:"/api/unfavorite/", data:{"extra_id":id}, async:false, success:function(result){ if (result.status == 200) { $('[extra_id='+ result.article_id +']').find('a.unfavorite').attr("class","favorite"); $('[extra_id='+ result.article_id +']').find('a.favorite').html("<i class='empty heart icon'></i>"+result.favorite); // $('[extra_id='+ result.id +']').find('i.up').attr("class","thumbs up icon"); } }} ); }); when click <a class="favorite">, $(".favorite"){} runs success, it turn to <a class="unfavorite">, then click it … -
Could not parse the remainder: '():'
I got an error, TemplateSyntaxError at /app/ Could not parse the remainder: '():' from 'json_dict.items():'. I wanna embed json_parse method's result in views.py to index.html. I wrote in views.py like from django.shortcuts import render import json def index(request): return render(request, './index.html') def json_parse(): f = open('./data/company_demand.json', 'r') json_dict = json.load(f) I wrote in index.html like <html> <head> <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.js"></script> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.css"> </head> <body> <select id="mainDD" data-placeholder="Choose" class="chzn-select" style="width:600px;"> {% for k, v in json_dict.items(): %} {% for i in range(len(k)) %} <p>{{ i }}</p> <p>{{ i }}</p> <p>{{ i }}</p> <p>{{ i }}</p> <p>{{ i }}</p> {% endfor %} {% endfor %} </select> </body> </html> json_dict's is {'items': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’, ‘C: ‘c’, ‘D’: ‘d’}]}. I wanna embed ---&a&b&c&d in this place of i variable of p tag. I did not think Syntax Error happens in my codes, so I really cannot understand why this error happens.How should I fix this?What can I write it? -
ValueError: Cannot assign "'assignee'": "Task.assignee" must be a "User" instance
I create tests for api and models. The issue is to test if models are created. User model is this one: class User(AbstractUser): CUSTOMER = 1 EXECUTER = 2 USER_TYPES = ( (CUSTOMER, 'Customer'), (EXECUTER, 'Executer'), ) user_type = models.IntegerField(choices=USER_TYPES, default=EXECUTER, verbose_name='Тип пользователя') balance = models.DecimalField(decimal_places=2, max_digits=7, default=0, verbose_name='Баланс') def __str__(self): return self.username Task models look like: class Task(models.Model): title = models.CharField(max_length=255, verbose_name='Заголовок') description = models.CharField(max_length=255, verbose_name='Описание') money = models.DecimalField(max_digits=7, decimal_places=2, default=0, verbose_name='Цена') assignee = models.ForeignKey('users.User', related_name='assignee', null=True, verbose_name='Исполнитель') created_by = models.ForeignKey('users.User', related_name='created_by', verbose_name='Кем был создан') I want to test models creation, but test model doesn't want to be made. Problem is in assignee and created by fields. This is my test: def test_creating_models_instance(self): User.objects.create(username="assignee", first_name="First_name_2", last_name="Surname_2", user_type=2, balance="16155.00") User.objects.create(username="created_by", first_name="First_name_1", last_name="Surname_1", user_type=1, balance="16155.00") Task.objects.create(title="Task_1", description="Description_1", money="155.00", assignee="assignee", created_by="created_by") And I have mistake like: self.field.remote_field.model._meta.object_name, ValueError: Cannot assign "'assignee'": "Task.assignee" must be a "User" instance. -
Subprocess error in wkhtmltopdf in a docker environment
Getting the error below when I try to run wkhtmltopdf in a docker environment. subprocess.CalledProcessError: Command '['wkhtmltopdf', '--encoding', 'utf8', '--margin-top', '10', '--quiet', '/tmp/wkhtmltopdf85qv7fvc.html', '-']' died with <Signals.SIGABRT: 6>. The code is seen below. It is working in an Ubuntu 16.04 vagrant machine. However, when I move it to a docker environment, it fails with the error above. At first I was using a Python3.6 image then changed to an Ubuntu 16.04 image thinking that maybe wkhtmltopdf requires a fuller linux environment. But still no luck. from django.http import HttpRequest from wkhtmltopdf.views import PDFTemplateResponse def generate_invoice_pdf(download_pdf=False, **kwargs): """ Render html to PDF """ file_name = kwargs['file_name'] template = kwargs['template'] context = { "first_Name": "John", "last_name": "Doe" } # Create request object request = HttpRequest() params = { 'request': request, 'template': template, 'filename': os.path.basename(file_name), 'context': context, 'cmd_options': {'margin-top': 10, }, 'show_content_in_browser': True } response = PDFTemplateResponse(**params) # write the rendered content to a file with open(file_name, "wb") as f: f.write(response.rendered_content) # Part throwing the error if download_pdf: return response else: msg = 'PDF Generated: {}'.format(file_name) return msg -
Error with uwsgi
I am trying to load uwsgi configs with: sudo uwsgi --ini /var/www/alpanahub/conf/uwsgi.ini But, I am getting error: open("./python_plugin.so"): No such file or directory [core/utils.c line 3686] !!! UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or directory !!! Can someone help me? Thanks in advance. -
how to use Ajax to get request, Django
Currently I am loading my html page like as follow- def home(request): context = {} template = 'home.html' return render(request,template,context) def about(request): context = {} template = 'about.html' return render(request,template,context) If i want to load using ajax then how i request for get. please help -
Django ORM orderby exact match to be on top
I need to order the results based on the length of match in Django ORM. I have a Location table with countries in name field. I have a requirement to search the table with given text and order by exact match / most prominent match to be the top For example:- 1) if search string is 'America' then the result should be [America, South America, North America ..] in this case we found a complete match, which has to be the first element. 2) if search is port then the result should be ['Port Melbourne' 'Portsea', East Airport] in this case we found port to be a complete match before the delimiter. Any clue ? Thanks in advance -
Does Django AllAuth send a signal for signup email verified?
Allauth Signals I'm still uncertain after reading the docs concerning signals that the following signal is sent after the user verifies his signup email. allauth.account.signals.email_confirmed(request, email_address) Will that signal be fired when a user creates an account and clicks the verification link in the email or does it only get sent when the user updates an existing email? -
Can I limit the visible Collections in the Wagtail Admin Image Chooser?
I have a few Groups and Collections setup to take advantage of the Collections feature in wagtail. I have limited collection A to Administrators only. After logging in as a non-Administrator and clicking on the 'CHOOSE AN IMAGE' button to bring up the image chooser, there's a drop down for 'Collection' and it includes all of my collections, including the restricted collection A. Is it possible to only show collections and images that the user owns similar to how the 'Images' menu item works? Wagtail: 1.12.2 Django: 1.8.18 -
Having trouble with Django forms. Not understanding this error
I'm trying to set up a form on Django that displays inputs on the page, but I get this error. django.db.utils.OperationalError: no such table: firstapp_post This doesn't happen right away, but when I try to use the submit feature on my form. Right now this is what I have as my models: from django.db import models from django.contrib.auth.models import User class Post(models.Model): post = models.CharField(max_length=500) user = models.ForeignKey(User) These are currently my forms: from django import forms from firstapp.models import Post class IndexForm(forms.ModelForm): post = forms.CharField() class Meta: model = Post fields = ('post',) This is my views file: from django.shortcuts import render, redirect from firstapp.forms import IndexForm from django.views.generic import TemplateView class HomePage(TemplateView): template_name = 'home/home.html' def get(self, request): form = IndexForm() return render(request, self.template_name, {'form': form}) def post(self, request): form = IndexForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.user = request.user post.save() text = form.cleaned_data['post'] form = IndexForm() return redirect('home:home') args = {'form': form, 'text': text} return render(request, self.template_name, args) This is my base.html {% load staticfiles %} <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Assignment 4</title> <link rel='stylesheet' href='{% static "css/base.css" %}'/> </head> <body> <p>{{ variable }}</p> {% block body %}{% endblock %} <script src= '{% static "js/base.js" %}'></script> … -
Django: Auto suggest in text field
I'm trying to work out how to have suggestions in a text field using Django (1.11). I've been going through the documentation of autocomplete-light but so far I've not been able to figure out my use case. The documentation on that package is not easy to understand for a total noob :) I want a text field that gives suggestions as you type, were the suggestions come from the database. E.g. if it's a list of food items the user types in 'C' and it suggest Chicken and Crisps as they have been entered by someone earlier. I also want the user to be able to enter Cheese even though it hasn't been entered before. The suggestion "algorithm" just has to check if what has been entered matches the first characters of already existing items. Here is a boiled down version of the django project: urls.py from django.conf.urls import url from django.contrib import admin from testapp.views import TestView urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'$',TestView.as_view()) ] models.py from django.db import models class TestModel(models.Model): name = models.CharField(max_length=120) def __str__(self): return self.name forms.py from django import forms from .models import TestModel class TestFormClass(forms.ModelForm): class Meta: model = TestModel fields = ('__all__') views.py from … -
Why the form is not JSON serializable?
I am using Django and I am trying when a button is clicked to get data from the database and fill a form with them through AJAX. I get the error TypeError: Object of type 'EditProductForm' is not JSON serializablefrom the edit_product_view in my views.py Below is the code I am working with: -urls.py from django.conf.urls import url from . import views app_name = "products" urlpatterns = [url(r'^products', views.ProductsView.as_view(), name="products"), url(r"^product/new", views.add_new_product_view, name="add_new_product"), url(r"^product/(?P<id>[0-9]+)/edit/", views.edit_product_view, name="edit_product")] -views.py from django.views.generic import DetailView, ListView, TemplateView from django.http import JsonResponse from django.shortcuts import render, get_object_or_404 from . import models from products.forms import AddNewProductForm, EditProductForm def index(request): return render(request, 'products/products.html') class ProductsView(ListView): context_object_name = "products" model = models.Product template_name = "products/products.html" form = AddNewProductForm() def get_context_data(self, **kwargs): context = super(ProductsView, self).get_context_data(**kwargs) context["products"] = models.Product.objects.all().order_by("title") context["form"] = self.form return context def add_new_product_view(request): if request.method == "POST": form = AddNewProductForm(request.POST) if form.is_valid(): form.save(commit=True) return JsonResponse({'msg': 'Data saved'}) else: print("ERROR FORM INVALID") return JsonResponse({'msg': 'ERROR FORM INVALID'}) else: form = AddNewProductForm() return JsonResponse({'form': form}) def edit_product_view(request, id): print(request.method) instance = get_object_or_404(models.Product, id=id) form = EditProductForm(instance=instance) if request.method == "POST": form = EditProductForm(request.POST, instance=instance) if form.is_valid(): form.save(commit=True) return JsonResponse({'form': form}) else: print("ERROR FORM INVALID") return JsonResponse({'form': form}) -products.html … -
Error migrating MySQL database into Django. Unexpected host name
I am trying to migrate a MySQL db into Django. I created a simple database when I followed a tutorial, but now I am trying to migrate my actual db into the project. I modified settings.py to look like this: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'pulse', 'USER':'root', 'PASSWORD':'zzz', 'HOST':'yyyy-backend.cluster-xxx.us-east-1.rds.amazonaws.com', 'PORT':'3306', } My error: mysql_exceptions.OperationalError: (2005, "Unknown MySQL server host 'mysql://dev-backend.cluster-xxx.us-east-1.rds.amazonaws.com:3306' (74)") Where the heck is it getting dev-backend.cluster as the database from? My migrate command: python manage.py makemigrations python manage.py migrate -
Django validation with ReactJS and Redux Form
Currently, I am working on a project that uses ReactJS, Redux, and Django. I have a ReduxForm for registration. <h3>Company's basic information</h3> <Field // Redux form props name="name" component={renderTextField} label="Company's Name" // Custom props required={true} type="text" placeholder="Company's Name..." onBlur={this.handleFieldsChange.bind(this)} /> So a single field looks something like that. When the form is submitted the information is sent over to Django to store. I am unsure of how validation works between these two. What I am wanting to do is check if a company exists with that name. Organization.objects.filter(company_name=name) So I do this to and I am able to see if it exists. If it does, then I want to make it known to the user that they cannot have the same name. This is where I am unsure of how to make this work. I did something like raise ValidationError({'name': ["A company named '%s' already exists" % name,]}) However, this only make the form not submit. The validation error only appears in the log. Perhaps someone can point me in the right direction.