Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Get user information in django templates and and checking weather its = to authors name
I'm not able to query the username and couldn't compare to the author . it worked for one case which is posted below...please I need urgent help .stuck on a project . thanks in advance ``` {% if user.is_authenticated %} {% if user.get_username == blog.author %} <a href="{% url 'update' pk=blog.pk %}"><i class="fas fa-pen fa-2x fa-spin"></i></a> {% endif %} {% if user.is_superuser %} <a href="{% url 'update' pk=blog.pk %}"><i class="fas fa-pen fa-2x fa-spin"></i></a>/ <a href="{% url 'delete' pk=blog.pk %}"><i class="fas fa-trash-alt fa-2x fa-spin"></i></a> {% endif %} {% endif %} *my view * @login_required(login_url='login') def update_post(request, pk): post = get_object_or_404(Post, pk=pk) if request.method == 'POST': form = EditPost(request.POST, request.FILES, instance=post) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.last_edited = timezone.now() post.save() return redirect('blog', pk=post.pk) else: form = EditPost(instance=post) context = {'form': form} return render(request, 'blog/edit_post.html', context) my model class Post(models.Model): author = models.ForeignKey('auth.User', on_delete=models.CASCADE) title = models.CharField(max_length=200, null=True) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) pub_date = models.DateTimeField(blank=True, null=True) last_edited = models.DateTimeField(null=True, blank=True) def __str__(self): return f'{self.title} by author {self.author}' but it worked for {% for comment in blog.comments.all %} <cite>{{ comment.author }}</cite> <time class="comment__time">{{ comment.created_date }}</time> {% if user.is_authenticated and request.user.username == comment.author %} <a class="reply" href="{% url 'remove' pk=comment.pk … -
Why do I get a No Reverse Match error in this case?
So, this is what's going on: I am able to get a blog post in my Django 2.1 app by its primary key. However, by demand of the marketing team, I was asked to put a slug on the URL, so instead of /blog/1, I should get /blog/my-blog-post-title. Thus, while still using the pk value to get the blog post, I just need to get the url to work the way I intend to. URL: path('<slug:slug>/', blog_views.blog_single, name='blog-single') In the HTML, I always refer to this page as: href="{% url 'blog-single' pk=blogPost.id slug=blogPost.get_slug %}" , so that I get both the pk and the slug, which is gotten by the get_slug() method declared on the Blog model. The view is here: def blog_single(request, pk, slug): context = {} context['blogPost'] = blogPost.objects.get(id=pk) ... return render(request, 'blog/blog-single.html', context) Still, in any page that refers to blog-single in the href, I get the following error: Reverse for 'blog-single' with keyword arguments '{'pk': 2, 'slug': 'my-blog-post-title'}' not found. 1 pattern(s) tried: ['blog\\/(?P<slug>[-a-zA-Z0-9_]+)\\/$'] I have tried so many different answers I found on the Internet, and read the answer on this post extensively, but I just can't get my head around what's not working: What … -
Secret Key not found when Django Unit Tests are executed
Whenever I'm running my Django-Tests via the unittests.py file in the main folder the SECRET KEY in .env is not found. What is the correct way to set up the regular Unittests-File for a series of Django-Tests? I wrote my settings.py in a way it's able to write a new key if no other key is found: ---settings.py--- try: print("Current key: " + os.environ['SECRET_KEY']) SECRET_KEY = os.environ['SECRET_KEY'] except KeyError as kerr: logging.error("Can't find Secret Key in settings.py") path_env = os.path.join(BASE_DIR, '.env') utils.generate_secret_key(path_env) dotenv.read_dotenv(path_env) SECRET_KEY = os.environ['SECRET_KEY'] This has worked, but as on every run of the unittests another new key is created, which is not intended. So far I'm running the unittests with a default script which works fine, except for the issue with the key: ---unittests.py--- import DjangoProject.tests_client suite = unittest.TestSuite() loader = unittest.TestLoader() suite.addTest(loader.loadTestsFromModule(DjangoProject.tests_client)) The implemented Test is not a too huge surprise: from django.test import TestCase import django django.setup() class TestBase(TestCase): def setUp(self): #Stuff def tearDown(self): self.removeData() def test_Clienttest(self): #Stuff The Unittests-Classes inherit as required from from django.test.TestCase and do what they are supposed to: Running the Unittest-Script with these settings will result in an error as it can't find the SECRET KEY (I did some debugging … -
How can I manage in django that user can see only his department
Can you please tell me that in Django, i have created model with departments. and how can i manage that with views functions , User can see only his department products. For ex. There are 3 departments (Sales, IT, Finance) Ulvi has access IT and he can see only products of IT deparment. Do have to manage this with models or functions? Regards, Ulvi -
how can filter data depending on another model in Django admin
models.py class Destination(models.Model): title = models.CharField(max_length=200,db_index=True, null=True) class City(models.Model): destination = models.ForeignKey(Destination, related_name='des_city', on_delete=models.CASCADE, null=True) title = models.CharField(max_length=200, db_index=True, null=True) class Program(models.Model): destination = models.ForeignKey(Destination, related_name='des_programs', on_delete=models.CASCADE, null=True) city = models.ForeignKey(City, related_name='cit_programs', on_delete=models.CASCADE, null=True) title = models.CharField(max_length=300, db_index=True, null=True) admin.py class ProgramAdmin(admin.ModelAdmin): model = Program admin.site.register(Destination) admin.site.register(Program, ProgramAdmin) admin.site.register(City) if it possible in admin area in program model we select first the destination as country and then city belong to only one destination example destination E gypt then drop-down menu in city with all cities belong to egypt like Hurghada, Sharm Elshikh et. -
Why isn't my Django CharField in the User model being saved?
I assigned a CharField named "description" as a Field to the built-in User Model,and when I change the profile ther is a CharacterField named Description, but when I fill in any content and click on "Done", the Description of the profile remains empty. This is what a part of my code in my users/forms.py file looks like: from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from .models import Profile class UserUpdateForm(forms.ModelForm): email = forms.EmailField() description = forms.CharField(required=False, max_length=100) class Meta: model = User fields = ['username', 'email', 'description'] This is what a part of my users/views.py file looks like: from django.shortcuts import render, redirect from django.contrib import messages from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm from django.contrib.auth.decorators import login_required def Profile(request): return render(request, 'users/profile.html') @login_required def ProfileUpdate(request): if request.method == "POST": u_form = UserUpdateForm(request.POST, instance=request.user) p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile) if u_form.is_valid() and p_form.is_valid(): u_form.save() p_form.save() messages.success(request, f"Your account has been updated") return redirect("/profile") else: u_form = UserUpdateForm(instance=request.user) p_form = ProfileUpdateForm(instance=request.user.profile) context = { 'u_form': u_form, 'p_form': p_form, } return render(request, 'users/profileupdate.html', context) My urls.py file looks like this: from django.urls import include, path from users import views as user_views urlpatterns = [ ..., path('profile/', user_views.Profile, name="profile"), … -
Django - Nginx giving 404 error with Daphne
I deployed a Django application to a VPS, everything seems to work except for the Django Channels part of the app. I'm trying to establish a connection from a template to my websocket consumer, but i keep getting the following error: (index):10 WebSocket connection to 'ws://mydomain/receiver' failed: Error during WebSocket handshake: Unexpected response code: 404. Can anyone help me find what's wrong with my deployment? Here is how i deployed the app: /etc/nginx/sites-available/myproject server { listen 80; server_name 54.39.20.155; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /WaitingRoomVenv/WaitingRoom/WaitingRoom/static; } location / { include proxy_params; proxy_pass http://unix:/WaitingRoomVenv/WaitingRoomEnv.sock; } } /etc/systemd/system/gunicorn.service [Unit] Description=gunicorn daemon After=network.target [Service] User=root Group=www-data WorkingDirectory=/WaitingRoomVenv/WaitingRoom ExecStart=/WaitingRoomVenv/WaitingRoomEnv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/WaitingRoomVenv/WaitingRoomEnv.sock WR.wsgi:application [Install] WantedBy=multi-user.target And here is the Daphne service: [Unit] Description=daphne service to run Channels on WaitingRoom After=network.target After=nginx.service [Service] Type=simple RuntimeDirectory=daphne PIDFile=/run/daphne/pid User=root Group=www-data WorkingDirectory=/WaitingRoomVenv/WaitingRoom ExecStart=/WaitingRoomVenv/WaitingRoomEnv/bin/daphne -u /tmp/daphne.sock WR.asgi:application ExecStop=/WaitingRoomVenv/WaitingRoomEnv/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target -
How to make a tab for few models in Django Admin panel?
So I have three models: ArtDrawn, ArtWritten, ArtOther, every has different fields. I'd like to customize Django Admin panel so I can click on "Art" instead of specific model, then from an option list pick one of those three and then it'll let me add this object. How can I achieve this? -
Optimal query writing to target selective M2M fields in a model, like Queryset.values( ) does for non M2M ones
so I happen to need help in writing optimal query to target specific M2M fields for my model named Property and finally append all properties details in a json format. Things to note: 1) Property model has M2M fields review, and room_types that I want to target. 2) Inside those M2M connected models, I also want to target specific sub-fields, namely rating field in review, and room_type sub-field in room_types. 3) Property model also has many other non M2M/ f_key fields out of which I need to target name and address. I want output in this form, with each property being represented as a dictionary inside a list. [ { "name": "Property 1", "address": "Address of Property 1", "room_types__room_type": ["Private", "Two Sharing", "Four Sharing"], "reviews__rating": [5.0, 4.0, 3.5] }, { "name": "Property 2", "address": "Address of Property 2", "room_types__room_type": ["Private", "Two Sharing", "Four Sharing"], "reviews__rating": [4.5, 4.0, 4.2] }, ] models look like this: class Property(models.Model): name = models.CharField(max_length=100) address = models.TextField() room_types = models.ManyToManyField(RoomTypes) reviews = models.ManyToManyField(PropertyReviews) class PropertyReviews(models.Model): user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) timestamp = models.DateTimeField(auto_now_add=True) rating = models.DecimalField(max_digits=2, decimal_places=1, choices=...) review = models.TextField() class RoomTypes(models.Model): room_type = models.CharField(max_length=25) query I tried looks as follows properties = Property.objects.prefetch_related('room_types', 'reviews').values('name', … -
Reverse for 'product' with no arguments not found. 1 pattern(s) tried: ['product/(?P<slug>[-a-zA-Z0-9_]+)$']
I want to pick up the particular item and display it on a product page- but I am getting the above error- urls.py- path('product/<slug:slug>', ItemDetailView.as_view(), name='product') models.py- class Item(models.Model): title = models.CharField(max_length=100) price = models.FloatField() discount_price = models.FloatField(blank=True, null=True) category = models.CharField(choices=CATEGORY_CHOICES, max_length=2) label = models.CharField(choices=LABEL_CHOICES, max_length=1) slug = models.SlugField() description = models.TextField() def __str__(self): return self.title def get_absolute_url(self): print('hi this is slug', self.slug) return reverse("core:product", kwargs={ 'slug': self.slug }) I actually even tried to print the slug-but it is not getting printed home-page.html- <a href="{{item.get_absolute_url}}" class="dark-grey-text">{{item.title}} what i am doing wrong? -
Django - Apache2 can't load media files from media folder
I installed an linux server with apache where I want to run my Django app. So I set everything up and when I started the app everything was shown to me except for the pictures. I couldn't find a error inside my site.conf <VirtualHost *:80> ServerName MYHOST ErrorLog ${APACHE_LOG_DIR}/mysite-error.log CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined WSGIDaemonProcess mysite processes=2 threads=25 python-path=/var/www/mysite WSGIProcessGroup mysite WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py Alias /robots.txt /var/www/mysite/static/robots.txt Alias /favicon.ico /var/www/mysite/static/favicon.ico Alias /static/ /var/www/mysite/static/ Alias /static/ /var/www/mysite/media/ <Directory /var/www/mysite/mysite> <Files wsgi.py> Require all granted </Files> </Directory> <Directory /var/www/mysite/static> Require all granted </Directory> <Directory /var/www/mysite/media> Require all granted </Directory> </VirtualHost> or inside my settings.py STATIC_URL = '/static/' STATIC_ROOT = '/var/www/mysite/static' MEDIA_ROOT = '/var/www/mysite/media' MEDIA_URL = '/media/' What I did was setting debug = True and inside linux console I run python3 manage.py collectstatic after reloading apache the website was shown with all its css and js but for every image request I get an error 404. Inside my templates/base.html I call {% load static %}. I tried to replace it with {% load staticfiles from static %} but that crashed my entire app (err 500) I use Django version 3.x and apache2 -
How to Implement Dependent/Chained Dropdown Lis between two foreignkey instances in admin page in Django?
I have the following Models : class Country(models.Model): title = models.CharField(max_length=40) class City(models.Model): title = models.CharField(max_length=40) country = models.ForeignKey(Country, on_delete=models.CASCADE) class Case(models.Model): title = models.CharField(max_length=40) country = models.ForeignKey(Country, on_delete=models.CASCADE) city = models.ForeignKey(City, on_delete=models.CASCADE) In the Django admin of the Case page, I want to implement the chained dropdown select between country and city. If the user choose USA from the country list, the city list will show only cities of USA. From other questions here, I see that i have to use 'list_select_related'. but that doesn't work with me. Is there any simple way to implement that ? -
Django REST, How to display every 5 element in a response?
Now the serializer displays all the data from the CoinCosts model in response (price,timestamp), but only every 5 element is needed, how to do it? Thanks My code now: serializers.py class CoinCostsSerializer(serializers.ModelSerializer): class Meta: fields = ('price', 'timestamp') model = CoinCosts class CoinSerializer(serializers.ModelSerializer): class Meta: fields = ('symbol', 'crr', 'costs') model = Coins costs = CoinCostsSerializer(source='filtered_coincosts', many=True) views.py class DateTimeGteFilter(filters.IsoDateTimeFilter): def filter(self, qs, value): if value != None: return qs.prefetch_related(Prefetch('coincosts_set', to_attr='filtered_coincosts', queryset=CoinCosts.objects.filter(timestamp__gte=value) ) ) else: return qs class CoinCostFilterSet(filters.FilterSet): timestamp = DateTimeGteFilter() class Meta: model = Coins fields = { 'symbol': ['exact'], } -
Django + Elastic Beanstalk, 500 Response codes in access_log but nothing in error_log
I have an application setup on Elastic Beanstalk (with an auto-scaling load balancer) using Django. The configuration also uses apache httpd and mod_wsgi. The app functions correctly but I am seeing an occasional error that for the life of me I cannot debug. This is due to the error itself not appearing in the error_log at any point. A sample from the access log, (IP addresses omitted): [15/Apr/2020:01:13:21 +0000] "GET /reroute/(All)_Lawyers/ HTTP/1.1" 500 27 "-" "" [15/Apr/2020:01:13:22 +0000] "GET /reroute/Chiropractors_Dc/ HTTP/1.1" 302 - "https://www.bing.com/" "Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36" The top request shows an error request, the bottom a typical request. The main thing I notice here is the absence of a user-agent in the 500 request. Combing through the access_log, every single request of this type is missing the user-agent. I have no specific functionality setup to deter bots/spiders or the like. These 500 errors happen randomly and have been doing so for the last few months. There have been no reports of these occurring with the end user, which leads me to believe two possibilities: An incorrect host not specified in Django's ALLOWED_HOSTS setting is being used by someone. Somehow, … -
I want to display some database query entries in my base.html
I have a multi website page with a base.html which contains similar information across pages, like logo, company name etc. I created two models class CompanyProfile(models.Model): company_name = models.CharField(max_length=100) company_logo = models.ImageField(upload_to='company_profile') company_address1 = models.CharField(max_length=50) company_address2 = models.CharField(max_length=50) company_address3 = models.CharField(max_length=50) company_phone1 = PhoneField() company_phone2 = PhoneField() company_email = models.EmailField() company_linkedin = models.URLField() company_facebook = models.URLField() company_twitter = models.URLField() def __str__(self): return self.company_name class CompanyServices(models.Model): service_name = models.CharField(max_length=50) service_logo = models.ImageField(upload_to='company_services') service_description = models.TextField() def __str__(self): return self.service_name and two views def base_view(request): company_profile = get_object_or_404(CompanyProfile) context = { 'profile': company_profile, } return render(request, 'webpages/base.html', context=context) def index_view(request): company_services = CompanyServices.objects.all() context = { 'services': company_services, } return render(request, 'webpages/index.html', context=context) in my URL.py, I am not loading base at all, since it was extended in my index.html. app_name = 'webpages' urlpatterns = [ path('', views.index_view, name='home') ] when I try to load the index with template tags from base.html, like so <div class="container d-flex"> <div class="contact-info mr-auto"> <i class="icofont-envelope"></i><a href="mailto:contact@example.com">***{{profile.company_email}}***</a> <i class="icofont-phone"></i> ***{{profile.company_name}}*** </div> It doesnt load from the database. how can I do this or it's imposible? is the base.html supposed to contain only static information? -
Django: dependencies reference nonexistent parent node for an installed app
I'm using a third party Django app (github link) in my project and trying to create a one-to-one field reference to one of its models. Organization = saas.models.Organization # Saas is my installed app class OrganizationProfile(TimeStampedModel): # TimeStampedModel is imported from django_extensions.db.models organization = models.OneToOneField(Organization, on_delete=models.CASCADE, related_name='profile') display_name = fields.CharField(max_length=127) # other fields When I make the migrations, there are two files generated 0013_auto_20200415_1919.py in the site-packages directory of my venv saas/migrations/0013_auto_20200415_1924.py 0001_initial.py in my own application where I've defined this one-to-one relationship. This file has a dependency to ('saas', '0013_auto_20200415_1924') which as expect has ForeignKey relation defined for profiles Now I've two questions, Why is the first file created? (here's the content of the first file for reference) How do I export this first file into a new environment as it is present in my site-packages and not part of VCS Because of this, I get the following error when I apply migration in my production environment Migration 0001_initial dependencies reference nonexistent parent node ('saas', '0013_auto_20200415_1924') I feel like I'm making some silly mistake, but not able to figure out what. -
Can't display MySQL data in html using Django
My code works fine and nothing is wrong, did not get any errors. But, what is weird is that I have id, name, email, major in mysql "students" table. but I don't see anything in my html page. what to do? stuck at this point. any suggestions? models.py class Students(models.Model): id = models.IntegerField(unique=True, primary_key=True) name = models.CharField(max_length=255) email = models.CharField(max_length=255) major = models.CharField(max_length=255) class Meta: managed = False db_table = 'students' views.py def showStudents(request): result = Students.objects.all() return render(request, 'students.html', {'results': result}) students.html {% extends 'base.html' %} {% block content %} {% for student in results %} <table> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th>Major</th> </tr> <tr> <td>{{ student.id }}</td> <td>{{ student.name }}</td> <td>{{ student.email }}</td> <td>{{ student.major }}</td> </tr> </table> {% endfor %} {% endblock %} urls.py urlpatterns = [ path('admin/', admin.site.urls), path('students', showStudents, name='students'), ] -
Free web hosts based on linux for Django? [closed]
I have been creating web apps for quite a while and have deployed many of them on Heroku. Most people do not prefer heroku due to the fact that going production level is really expensive. Same goes for pythonanywhere. Are there any other good, free web hosting services that is preferably based on linux? I don't really want to spend money on deploying websites yet since I have zero experience on deploying on such servers. I did try out AWS but my credit card does not work for international purpose. -
Django Different User Types Impelementation
Building a multiple different level, also with different permissions user types in Django models, how should it be implemented? I have one example here and I'm not sure as for the permissions, if this would be the best model, since I know there are a few variations and would like to know if I'm doing it right. class UserProfile(models.Model): user = models.ForeignKey(User) #define general fields class Agent(models.Model): profile = models.ForeignKey(UserProfile) #agent specific fields class Meta: db_table = 'agent' class Management(models.Model): profile = models.ForeignKey(UserProfile) #customer specific fields class Meta: db_table = 'management' class Contractor(models.Model): profile = models.ForeignKey(UserProfile) #customer specific fields class Meta: db_table = 'contractor' I'm actually looking for 4 User Type accounts: Agent, Customer, Management, Contractor. How to implement this in Django, both different permissions and fields? -
why does not django create db_index for object_id for GenericForeignkey?
i am using django 2.2. i have create a like/dislikie system using generic relation. django only create a indexing for contenttype but not object_id. if i try to count likes/dislike for specific model with specific object id it will be slow because there is no indexing for object_id. if my generic model is connected to 10 models where each models has many objects and each objects has many likes. here counting number of likes/dislike will be slow because it will use indexing for contenttype only. -
Putting tags in a StructBlock
I want to be able to add tagging to a custom StructBlock that I've created. The current model looks like this class MapsIndicatorBlock(blocks.StructBlock): text_icon = blocks.CharBlock( label='Maps/Indicators Text or Icon', required=False ) pop_up_title = blocks.CharBlock( label='Pop-Up Title', required=False ) pop_up_text = blocks.RichTextBlock( label ='Pop-Up Text/Image', required=False ) pop_up_colour = blocks.CharBlock( choices=constants.BOOTSTRAP4_BUTTON_COLOUR_CHOICES, default='btn btn-primary', max_length=128, required=False ) tags = TaggableManager() objects = models.Manager() class Meta: template = 'cityregiontable/map_indicator_block.html' The TaggableManager() was designed to be used with models.model not blocks.StructBlock. I have tried to create a way to create the tags using the following to no avail. I get the error RE: not being able to find the model for MapsIndicatorBlock. This is correct as MapsIndicatorBlock is a block, not a model. class MITag(TaggedItemBase): content_object = models.ForeignKey( 'MapsIndicatorBlock', on_delete=models.CASCADE, related_name='tagged_mi_block' ) How can I allow -
how to customize login url and condition in django simple jwt
I have an app with multi user type, Author, Moderator and Manager. this groups have different android apps. and I've used django simple JWT token for login. the problem is that Author can login in moderator app and moderator can login in others app and so on. the question is that, how can i separate login urls and conditions for these groups?? -
Whats the meaning of 5 at the end of manytomany in views in django?
I'm working with many to many databases in Django but I do not understand one piece of code. what's the meaning of 5 in the below line of code: areadata.objects.get(id = area_id).pub.add(mymodel.objects.get(id = restaurant_id),5) If anyone knows that meaning please explain to me. -
How to make a python script which automatically execute after a certain time django
I am making a website with django in which user need to upload a text file it will be saved with its named appended with the time of upload, I want to write a python script which deletes the file from the media folder after a certain time(e.g. one day after the upload time) how to do so and in which file or folder should I code this part to make it work properly -
Order queryset by a certain key value
I want to show items with a certain foreign key first. Tried this, but it doesn't seem to work: class Part(models.Model): press = models.ManyToManyField(Press) class Order(models.Model): press = models.ForeignKey(Press) class PartListView(ListView): def get_queryset(self): qs = Part.objects.all().order_by('-pk') press = None if 'pk' in self.kwargs: order_id = self.kwargs['pk'] order = Order.objects.get(id=order_id) press = order.press # Get the foreign key value if press is not None: qs = sorted(qs, key=lambda Part: Part.press == press) return qs