Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django add custom search function with empty search_fields tuples
I have the following get_search_results within my ModelAdmin to search by user phone number and email: def get_search_results(self, request, queryset, search_term): queryset, use_distinct = super().get_search_results(request, queryset, search_term) try: search_string = str(search_term) users = User.objects.filter(Q(email__icontains=search_string) | Q(phone_number__icontains=search_string)) user_id_list = [int(user.pk) for user in users] queryset |= self.model.objects.filter(user__in=user_id_list) except Exception as e: pass So these search_term won't exist in my model column therefor i won't need model columns in the search_fields. But if i set my search_fields = () then it won't show the search box in the listing page. Are there anyway i can add search box to the list page without specify any columns from the model ? -
Looking in links: /usr/share/pip-wheels
I was using a virtualenv in Pythonanywhere and now after cloning my repo I tried to install all the packages by using this command pip install -r packageName/requrirements.txt What is get is this Looking in links: /usr/share/pip-wheels I don't know about pip a lot.So please tell me what this eror means and how can i fix it with examples!Thank you in advance. -
Django: Default ImageField Return
I have a Django ImageField with djangorestframework, and I want it to return a default image if it's none. How can I return an image from my staticfiles to replace this? class MyModel(models.Model): image = models.ImageField() ... def get_image(self): """ Returns an image, or the default image. """ if not self.image: # what goes here? <--- return self.image -
virtualenv: error: the following arguments are required: dest
enter image description here I can't install and configure virtual environment on python3 on my macbook pro. I was trying to install and try django for my next project but here problemts started arising. -
can we change the name of manage.py file in django?
In Django framework I need to rename manage.py file for the security reasons on production environment. I do not have any idea about this. could someone help me out for the same -
django.core.exceptions.FieldError: Unknown field(s) (datetime) specified for Class
So I have a class named InputArticle, and have a field named 'created' and 'modified.' Below is my code in models.py from django.db import models from django.contrib.auth.models import User from django.forms import ModelForm from django.utils import timezone class InputArticle(models.Model) ''' other fields ''' created = models.DateTimeField(editable=False) modified = models.DateTimeField() def save(self, *args, **kwargs): if not self.created: self.created = timezone.now() self.modified = timezone.now() return super(InputArticle, self).save(*args, **kwargs) However when I try to do python manage.py makemigrations I keep getting this error that says: django.core.exceptions.FieldError: Unknown field(s) (datetime) specified for InputArticle I have no idea on what the problem is. I very much appreciate your help :) -
Python Django request.GET.get method for urls with if statements
I'd want to filter the posts by its two different categories which are schools and category. models.py class Category(models.Model): name = models.CharField(max_length=100) slug = models.SlugField(max_length=100, unique=True) class Meta: ordering = ('name',) verbose_name = 'category' verbose_name_plural = 'categories' def __str__(self): return self.name class School(models.Model): name = models.CharField(max_length=100) slug = models.SlugField(max_length=100, unique=True) class Meta: ordering = ('name',) verbose_name = 'school' verbose_name_plural = 'schools' def __str__(self): return self.name class VideoPost(models.Model): category = models.ForeignKey('Category', on_delete=models.CASCADE) school = models.ForeignKey('School', on_delete=models.CASCADE) title = models.CharField(max_length=100) slug = models.SlugField(max_length=100, unique = True) author = models.ForeignKey(User, on_delete=models.CASCADE) video = models.CharField(max_length=100, blank=True) content = RichTextUploadingField() image = models.ImageField(upload_to='images', null=True, blank=True) date_posted = models.DateTimeField(default=timezone.now) def _get_unique_slug(self, *args, **kwargs): self.slug = slugify(self.title) super(VideoPost, self).save(*args, **kwargs) def __unicode__(self): return self.title School and Category are the foreignKeys for VideoPost, so in the db, it would only have its ids, not the slug or name. whcih are category_id & school_id views.py def post_list(request): school = request.GET.get('school', None) category = request.GET.get('category', None) posts = VideoPost.objects.all() if school: posts.filter(school=school).order_by('-date_posted') elif category: posts.filter(category=category).order_by('-date_posted') elif school & category: posts.filter(school=school).filter(category=category).order_by('-date_posted') else: posts.order_by('-date_posted') ## I wanted to filter them in multiple ways where the posts are filtered by either one of the category, or both. but It doesn't work. ## The … -
accessing javascript outside of django project
I have become the owner of an older webapp that uses django and esri/jsapi3.28. I am trying to reconstruct it in development environment. It works in production using apache2 with document root at the 'webapp' directory. I would like to create a development environment w/o apache2 and instead use django's runserver. But when trying to test in development using runserver, it cannot find the 'my_ext_js' directory. I believe this is because the document root is different? It appears I cannot change the document root. This is the webapp structure. webapp my_ext_js start.js django_app myapp django_app Again, in production, we run apache2 with mod_wsgi and document root is webapp. When running in development, I start runserver in django_app directory django_app> python manage.py runserver how can I run this using runserver in development and have it recognize/see the 'my_ext_js' folder? The production code does not have the 'my_ext_js' in a static folder. The html script just calls: <script src="/my_ext_js/start.js"></script> Any help would be great! Thanks! -
Starting a Django Docker project and getting error: ERROR: build path app/app either does not exist, is not accessible, or is not a valid URL
I'm using a Docker Django quick start tutorial. My dockerfile: FROM python:3.7.0-alpine WORKDIR /usr/src/app ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN pip install --upgrade pip COPY ./requirements.txt /usr/src/app/requirements.txt RUN pip install -r requirements.txt COPY . /usr/src/app/ My docker-compose: version: '3.7' services: web: build: ./app command: python manage.py runserver 0.0.0.0:8000 volumes: - ./app/:/usr/src/app/ ports: - 8000:8000 env_file: - ./.env.dev The problem When trying to run the following command: docker-compose build I receive the following error: ERROR: build path /Users/defaultuser/Documents/dev/simple_product_inventory/app/app either does not exist, is not accessible, or is not a valid URL. Could somebody point me in the right direction as to whats going wrong? -
Mix data and schema migrations in one migrations file (Django)?
I've heard the opinion that mix data migration and structure migrations is bad practice in Django. Even if you are specify atomic=False in your Migration class. But i could not find any information on this topic. Even my more expirience collegues could not answer this question. So, is it bad to mix data and structure migrations? If so why? What exactly may happen if i do it? -
Setting verbose name of function field in Django
I have a simple Model like this: class Artist(models.Model): class Meta: verbose_name = "Artist" verbose_name_plural = "Artists" name = models.CharField(max_length=128, unique=True, blank=False) def test_function(self): return 'xyz' And Admin: class ArtistAdmin(admin.ModelAdmin): list_display = ['name', 'test_function'] search_fields = ['name'] readonly_fields = [] Now in the list view, the function field is verbosed as test_function: In a normal field I would use the Field.verbose_name parameter. How do I achieve that with the function field? -
Import CSV file with django
1.Summarize the problem I am importing a csv file with django. Only the fist line seems to be imported in my database. Here is the code inside myview. views.py def upload_csv(request): chantiers = Chantier.objects.all() data = {} if "GET" == request.method: return render(request, "chantiers/upload_csv.html", data) # if not GET, then proceed try: csv_file = request.FILES["csv_file"] if not csv_file.name.endswith('.csv'): messages.error(request,'File is not CSV type') return HttpResponseRedirect(reverse("chantiers:upload_csv")) #if file is too large, return if csv_file.multiple_chunks(): messages.error(request,"Uploaded file is too big (%.2f MB)." % (csv_file.size/(1000*1000),)) return HttpResponseRedirect(reverse("chantiers:upload_csv")) file_data = csv_file.read().decode("utf-8") print("1") lines = file_data.split("\n") #loop over the lines and save them in db. If error , store as string and then display for line in lines: line = line.strip() if not line or line.startswith("#"): continue print(line) # following line may not be used, as line is a String, just access as an array #b = line.split() print(line[0]) fields = line.split(",") data_dict = {} data_dict["name"] = fields[0] data_dict["addresse"] = fields[1] data_dict["postcode"] = fields[2] data_dict["city"] = fields[3] print("3") try: form = ChantierForm(data_dict) if form.is_valid(): form.save() print("form saved") return render(request, 'chantiers/index_table.html', {'chantiers': chantiers}) else: print(form.errors.as_json()) logging.getLogger("error_logger").error(form.errors.as_json()) except Exception as e: print(e) logging.getLogger("error_logger").error(repr(e)) pass except Exception as e: print(e) logging.getLogger("error_logger").error("Unable to upload file. "+repr(e)) messages.error(request,"Unable to upload … -
Django Include ManyToManyField on "other" model in ModelForm
I would like to have a form with the preselected checkboxes of a ManyToManyField. models.py class Store(models.Model): ... class Brand(models.Model): stores = models.ManyToManyField(Store, blank=True, related_name="brands") forms.py class StoreForm(ModelForm): class Meta: model = Store fields = ('brands',) I get this exception: django.core.exceptions.FieldError: Unknown field(s) (brands) specified for Store How is it possible to include the ManyToMany field from "the other side" of the model (from Store)? -
Django 3.0 Admin Change Page Not Displaying Selected Option Correctly
I am running Django 3.0 and using Chrome Version 80.0.3987.132 (Official Build) (64-bit) and Firefox version 74 (64-bit). I have a select box on an admin change page for a model, and the correct value from the database is shown this way on the html source page generated by django: <option value="228">Frank</option> <option value="8" selected>Sam</option> <option value="19">Henry</option> However, the page is displayed in both browsers, Chrome and Firefox, with the default value "Pick one of the people", as if nothing has been selected. If I select another value from the drop down list, it is correctly inserted into the database, but the html on the admin change page still does not have selected="selected" in the correct option, but just the word 'selected' as shown above. I was looking online at the correct way to select an option in an option list, and it seems the correct (X)HTML way is to use selected="selected" in the option tag. Why is Django generating the old HTML way with just the word 'selected' in the option tag? Is there a way to fix this, or is this a bug in django or my browsers? I am not using any javascript or css on this … -
Django: redirect to view where login was called
I have a very common problem - after login I want to redirect to the page where login was called. I can describe situation exactly like here: Django: Redirect to previous page after login There are 2 options where you can log in - from the home page (which is defined in base.html) and from bokeh.html (other views inherit from bokeh) my base.html and bokeh.html have the same block to redirect to login. Difference is, that login called from home page should return to home page and from other page should return to page where was called. <li class="nav-item"> <a class="nav-link" href="{% url 'login' %}">Login</a> </li> my login.html <form method="POST"> {% csrf_token %} <div class="form-group"> <input type="text" class="form-control" placeholder="Enter Username" name="username" required> </div> <div class="form-group"> <input type="password" class="form-control" placeholder="Enter Password" name="password" required> </div> <div class="form-group"> <button type="submit" class="btn btn-dark">Login</button> </div> </form> and views.py def login(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = auth.authenticate(username=username,password=password) if user is not None: auth.login(request,user) return redirect('home') else: messages.info(request,'Invalid credentials') return redirect('login') else: return render(request,'login.html') I was trying to add next to my form in login.html but it didn't work. While accessing to login from page other than home page it … -
Swift 5 How to save UIImagePickerController edited image and upload to Django Rest Framework
Within my Swift app I am attempting to upload the selected image from UIImagePickerController to my Django Rest Framework backend. The problem: (Of many) Resource used: https://www.hackingwithswift.com/read/10/4/importing-photos-with-uiimagepickercontroller I have a "Change Image" button that brings up the image picker when the button is selected and the didFinishPickingMediaWithInfo handles generating the UUID for the photo's name, sets the image to the UIImageView on the storyboard and writes to the documents directory. However, I cannot upload the selected (now saved) image by its name or url. I've confirmed that I am able to upload images using Postman's form-data for Content-Type so I'm leaning more towards the Swift side being wrong. When printing to confirm paths: I receive the following imageName:::> testios1-a56078dc9bd749e98ebf095b94e9e3fc-606600911 jpegData:::> 1088255 bytes imagePath:::> file:///Users/testios1/Library/Developer/CoreSimulator/Devices/EE4E4C59-52FD-4ACB-9024-F2A3ACD3F794/data/Containers/Data/Application/E5BB861E-E3C9-47C7-8897-CD5535B259C6/Documents/testios1-a56078dc9bd749e98ebf095b94e9e3fc-606600911 imagePathExtension:::> imagePathAbsoluteURL:::> file:///Users/testios1/Library/Developer/CoreSimulator/Devices/EE4E4C59-52FD-4ACB-9024-F2A3ACD3F794/data/Containers/Data/Application/E5BB861E-E3C9-47C7-8897-CD5535B259C6/Documents/testios1-a56078dc9bd749e98ebf095b94e9e3fc-606600911 imagePathAbsoluteString:::> file:///Users/testios1/Library/Developer/CoreSimulator/Devices/EE4E4C59-52FD-4ACB-9024-F2A3ACD3F794/data/Containers/Data/Application/E5BB861E-E3C9-47C7-8897-CD5535B259C6/Documents/testios1-a56078dc9bd749e98ebf095b94e9e3fc-606600911 imagePathTestFileIsURL:::> true IBAction @IBAction func changeProfileImageButtonDidTouch(_ sender: Any) { let picker = UIImagePickerController() picker.allowsEditing = true picker.delegate = self picker.sourceType = .photoLibrary present(picker, animated: true, completion: nil) } didFinishPickingMediaWithInfo func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { // UserDefaults guard let username = UserDefaults.standard.string(forKey: "username") else { return } // Generate UUID var uuid = UUID().uuidString uuid = uuid.replacingOccurrences(of: "-", with: "") uuid = uuid.map { $0.lowercased() }.joined() // … -
DRF: How to get view to accept json with a list of dictionaries?
I'm using the APIClient to test my views. resp__1 = self.client.post(reverse('templates'), data=dict(data)) dict(data) shows the following: { "t_stops": [ { "address__pk": 1, "stop_num": 1 }, { "address__pk": 2, "stop_num": 2 } ], "customer__pk": 1 } What I don't want is for all my values in the JSON to be a list. Example would be my customer__pk value showing as [1]. When I do print(request.POST) in one of my views it shows the following: <QueryDict: {'t_stops': ["{'address__pk': 1, 'stop_num': 1}", "{'address__pk': 2, 'stop_num': 2}"], 'customer__pk': ['1']}> What's the proper way of getting these values to show correctly in Django rest? -
Django : How to build create view using forms and querysets?
I'm trying to create reservation create view that allows to break down the reservation process into 3 stages for handling all the database queries and displaying relevant choices accordingly to linkage between models (Personnel Profile has many to many key on Service) 1st stage - allows user to select service 2nd stage - displays available staff members (PersonnelProfile) who are handling this service 3rd stage - displays all the free dates / times based on staff member schedule / existing reservations, POST creates the reservation I got stuck at the 2nd stage as my form doesn't validate. I would appreciate any advise how to overcome this issue or how to handle the idea differently. Sorry for the long post :) Service class Service(models.Model): name = models.CharField(max_length=100) description = models.TextField() price = models.IntegerField() duration = models.IntegerField() def __str__(self): return self.name PersonnelProfile class PersonnelProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) birth_date = models.DateField(default=None, null=True) address = models.CharField(max_length=200) services = models.ManyToManyField(Service) image = models.ImageField(default='profile_pics/default.jpg', upload_to='profile_pics') def __str__(self): return f'{self.user.first_name} {self.user.last_name}' Schedule Model class Schedule(models.Model): user = models.OneToOneField(PersonnelProfile, on_delete=models.CASCADE) availability_days = models.ManyToManyField(WorkDay) start_hour = models.TimeField() end_hour = models.TimeField() def __str__(self): return f'Schedule of {self.user.user.first_name} {self.user.user.last_name}' WorkDay Model class WorkDay(models.Model): day_choices = [(str(i), calendar.day_name[i]) for i in … -
How to save a ModelSerializer with a foreign Key in Django Rest Framework
I have these serializers class OwnerSerializer(serializers.ModelSerializer): class Meta: model = User fields = [ 'id', 'name' ] class PetSerializer(serializers.ModelSerializer): owner = OwnerSerializer() class Meta: model = Pet fields = [ 'id', 'name', 'owner' ] def create(self, validated_data): """ Create and return a new `Pet` instance, given the validated data. """ owner_data = validated_data.pop('owner', None) if owner_data: owner = User.objects.get(**owner_data)[0] validated_data['owner'] = owner return Pet.objects.create(**validated_data) This is my ViewSet: class PetViewSet(viewsets.ModelViewSet): """ ModelViewSet for model pets """ queryset = Pet.objects.all() serializer_class = PetSerializer def create(self, request, *args, **kwargs): request.data['owner'] = {'id': request.user.id, 'name': request.user.name} pet_serializer = self.get_serializer(data=request.data) pet_serializer.is_valid(raise_exception=True) self.perform_create(pet_serializer) headers = self.get_success_headers(pet_serializer.data) return Response(pet_serializer.data, status=status.HTTP_201_CREATED, headers=headers) But when storing it, all the data is saved, but in the created function the owner object does not arrive, it is shown as 'owner': OrderedDict ()} So when I return the saved object, I get it with the owner with the default id, although the user I get in the view is 'owner': {'id': 10, 'name': 'My name'}} ): My Json Response: { "id": 26, "name": "My pet", "owner": { "id": 1 } } What am I doing wrong? Thank you -
Web Based Place Finder Using Django and GeoDjango
I'm currently working on this django project and I want users to be able to see a google map tracing from their current location to the destination they would select which would be added by the admin. How would I go about it and can I get a sample code for the exactly? -
Django Uploading Image through forms.py and The 'image' attribute has no file associated with it
I'm using django and made forms.py to upload the post. When I upload the post through admin page, they save image file well and I can see whole post in the page. But when I upload the post with form what I made, there's problem. They don't save image and give this message. 'The 'image' attribute has no file associated with it.' with The Value error. How can I solve this problem? And why it cannot save my file through forms.py but works in admin? posting.html <form method='POST' enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type='submit'>Submit</button> </form> models.py from django.db import models from taggit.managers import TaggableManager from django.utils import timezone # Create your models here. class Post(models.Model): title = models.CharField(max_length=100) image = models.ImageField(upload_to='images', null=True, blank=True) content = models.CharField(max_length=300) score = models.DecimalField(max_digits=3, decimal_places=1) tags = TaggableManager() date = models.TimeField(default=timezone.now) def __str__(self): return self.title views.py def posting(request): if request.method == 'POST': form = PostingForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/posting/') else: print(form.errors) else: form = PostingForm() return render(request, 'posting/posting.html', {'form':form}) -
Could I forward a stream from my website to youtube through their API?
I'm making a website for my church so we don't have to miss services and kids don't have to miss their classes during this pandemic and I made it so we can stream directly to the website but we can't stream to both the website and youtube at the same time since both require either an encoder or a webcam. Do you think I'd be able to somehow emulate an encoder to stream to youtube as well? I don't need help coding it, I just need to know if you think it's possible and if it is, if I should code a package so others can do the same. If I can help give other developers a bigger tool belt, I will. Through some modification of django-encode it may work. I don't think it's against their Terms of Service but I'll do more reading into that. -
Cannot assign OrderedDict...must be a Address instance
Trying to have a serializer to save address dict but receive the next error message: Cannot assign \"OrderedDict([('state', 'ON'), ('location', {'lat': '43.644905', 'long': '-79.399437'}), ('street1', '580 King St. W.'), ('street2', ''), ('city', 'Toronto'), ('postalcode', 'M5V 1M3'), ('country', 'US')])\": \"Venue.address\" must be a \"Address\" instance. Here are my serializers: class AddressSerializer(serializers.ModelSerializer): id = serializers.IntegerField(required=False) state = serializers.CharField(allow_blank=True) location = serializers.JSONField(required=False) class Meta: model = Address fields = "__all__" class VenueSerializer(serializers.ModelSerializer): address = AddressSerializer(many=False) image = serializers.JSONField(source="images", required=False) class Meta: model = Venue fields = ["id", "hostedbyid", "slug", "name", "image", "address"] extra_kwargs = {"id": {"validators": []}} def create(self, validated_data): address_data = validated_data.pop("address") try: validated_data["address"] = Address.objects.get(street1=address_data.get("street1")) except Address.DoesNotExist: validated_data["address"] = Address.objects.create(**address_data) try: venue = Venue.objects.get(pk=validated_data.get("id")) except Venue.DoesNotExist: venue = Venue.objects.create(**validated_data) return venue Models are here: class Address(models.Model): id = models.IntegerField(primary_key=True) street1 = models.TextField() street2 = models.TextField(blank=True, null=True) city = models.TextField() state = models.TextField() postalcode = models.TextField() country = models.TextField() location = models.TextField(blank=True, null=True) class Meta: managed = False db_table = 'address' class Venue(models.Model): id = models.IntegerField(primary_key=True) hostedbyid = models.IntegerField(blank=True, null=True) slug = models.TextField() name = models.TextField(blank=True, null=True) images = JSONField() address = models.ForeignKey(Address, models.DO_NOTHING, blank=True, null=True) class Meta: managed = False db_table = 'venue' And here is the sample data I want … -
How can we use log4j in Django api?
i make a rest api with Django. And i want to use log4j in same project. How can i do that? is this possible? you can share article, video or anything with me Thanks. -
Count the failed login attemps and lockout user in Django
I am trying to count the number of invalid login attempts using "user_login_failed_callback" method. As shown the code below, I am trying to access previous database field value of "failed_login_count" from "user_login_failed_callback" method. I will update the value of failed_login_count to failed_login_count+1 and also update the date and time to current time. My questions are So could you please let me know how can I access failed_login_count from database and update the existing value. As shown in below code I am using "BruteForceEntry.objects.filter" to update existing database row. So is this the correct way to update table. How can I lock out user account after more than 10 failed login attemps. Could you please help me. class BruteForceEntry(models.Model): user = models.ForeignKey(User, unique=True) username = models.CharField(max_length=256, null=True) data_time_of_last_unsuccessful_login = models.DateTimeField(auto_now=True, blank=True) failed_login_count = models.IntegerField(default=0) def __unicode__(self): return '{0} - {1} - {2}'.format(self.username, self.data_time_of_last_unsuccessful_login, self.failed_login_count) def __str__(self): return '{0} - {1} - {2}'.format(self.username, self.data_time_of_last_unsuccessful_login, self.failed_login_count) @receiver(user_login_failed) def user_login_failed_callback(sender, credentials, **kwargs): username = credentials['username'] user = User.objects.get(username=username) profile = user.get_profile() failed_login_count = profile.failed_login_count + 1 BruteForceEntry.objects.filter(username=username).update(data_time_of_last_unsuccessful_login=timezone.now(), failed_login_count=failed_login_count)