Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to run multi domainname in one django with nginx and uwsgi
I want to use multi domain for one django project one domain name for one app now my project's like this Project - domain/ -> Homepage - domain/appa -> App A - domain/appb -> App B I want to change to www.test.com -> Homepage appa.test.com -> App A appb.test.com -> App B I think I can use nginx virtual host to solve this problem but now I have no idea pleas help me. -
How to prevent a site from allowing its users to provide their own templates
I am developing a web app and in the Django documentation I read this: The template system isn’t safe against untrusted template authors. For example, a site shouldn’t allow its users to provide their own templates. Given the fact that I won't be allowing the end-user to upload any code, I reckon that the above would only be possible if the user would somehow gain access to the server and upload his (malicious) templates or by an XSS attack. Is there something else I am missing here and should be aware of? Are there any additional measures (except for securing my server and looking out for XSS attacks) I must take in order to prevent this from happening? -
Django - django-autocomplet-light fields does not display with gunicorn
dal fields of my app are working perfectly when I use "python manage.py runserver" but when I try to run my app with gunicorn the dal fields are empty (as if I didn't put form.media in my template ...). Except for dal field there is no problems. Is there something to change in the code for dal to work with gunicorn? My code is on github (https://github.com/jmcrowet/limonada/blob/master/limonada/forcefields/forms.py) -
One model interface to read/write to multiple tables Django
I've the following models in Django. class User(models.Model): name = models.CharField(max_length=50) ... ... class UserInformation(models.Model): user = models.ForeignKey(User) key = models.CharField(max_length=250) value = models.TextField() ... ... class UserAddress(models.Model): user = models.ForeignKey(User) address = models.TextField(null=True) city = models.CharField(max_length=200) ... ... Basically I want to create an interface for User through which I can route read and write operations to UserInformation and UserAddress. user = User.objects.get(id=1) Ex - If someone wants to get all addresses of a user. user.get_information('address') --> This will in turn search UserAddress table and return a list of addresses. Ex - If someone wants to get the current age of a user. user.get_information('age') --> This will in turn search UserInformation table with key=age and return the value. Similarly given a key I want to write data through the interface. Ex - Insert age of a user. user = User.objects.get(id=1) user.update_information('age', value=30) --> This will in turn insert a row in UserInformation table with key=age and value=30. Problems: I'm planning to create another table TableKeyMapping to keep the mapping of keys to table names. Such as if key_name=age, table_name=UserInformation. If key_name=address, then table_name=UserAddress. What should I save in table_name..the model name UserAddress or the complete path including the the … -
Django. How to get the object corresponding to a GenericForeignKey
Simple question. I have this model: class Discount(models.Model): discount_target = GenericForeignKey('content_type', 'object_id') content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, blank=True, null=True) object_id = models.PositiveIntegerField(blank=True, null=True) How do I get the object the GenericForeignKey is pointing? -
How to pass variable value from one view function to another one?
I have a project that I need to pass a value from a function to another. And I have searched so many information on stackoverflow, so many people suggest to use session to pass values.→How to pass data between django views Then I did all what he taught, but it always shows "None" on my website. I am sure that I have already activated 'django.contrib.sessions.middleware.SessionMiddleware', I think this is not the problem. from django.shortcuts import render from django.shortcuts import render_to_response # Create your views here. from django.template.loader import get_template from django.http import HttpResponse from django.db import connection from django.contrib.sessions.models import Session def generic1(request): if request.method=="GET": urn=str(request.GET['username']) psd=request.GET['password'] cursor=connection.cursor() sql="""SELECT password FROM `table1` WHERE `username`=%s""" cursor.execute(sql,(urn)) a=cursor.fetchall() print a[0][0] request.session['value']=str(a[0][0]) def result(request): message=request.session.get('value') return render_to_response('result.html',{'message':message}) result.html <html> <body> {{message}} </body> </html> urls.py from django.conf.urls import url from django.contrib import admin from mainsite import views urlpatterns = [ url(r'^$',views.index), url(r'^admin/', admin.site.urls), url(r'^generic.html',views.generic), url(r'^result.html',views.result), ] -
Django url not resolving in similar case to working one
I know this has been asked a lot but I can't find any answers that are general enough to learn something from them. I setup a Django project for the first time but am a little confused as I have 2 forms on 1 page and they both submit to a different view ('tick' and 'bestel') it does everything it is supposed to do under 'bestel' but then I submit to tick it gives me this error: Using the URLconf defined in Que.urls, Django tried these URL patterns, in this order: 1. [name='index'] 2. signup/ [name='signup'] 3. <int:user_id>/ [name='user'] 4. <int:user_id>/bestel [name='bestel'] 5. <int:user-id>/tick [name='tick'] 6. admin/ The current path, 11/tick, didn't match any of these. where can I be going wrong in this? -
Wagtail: How to filter text in streamfield within model.py
I would like to write a filter which replaces some $variables$ in my streamfield text. What is the best way to do this in my "Page" model? I tried the following but it is sometimes not working if I save my model as draft and publish it afterwards. Does anyone know a better way doing this? class CityPage(Page, CityVariables): cityobject = models.ForeignKey(CityTranslated, on_delete=models.SET_NULL, null=True, blank=True) streamfield = StreamField(BasicStreamBlock, null=True, blank=True) content_panels = Page.content_panels + [ FieldPanel('cityobject', classname="full"), StreamFieldPanel('streamfield'), ] def get_streamfield(self): for block in self.streamfield: if type(block.value) == unicode: block.value = self.replace_veriables(block.value) elif type(block.value) == RichText: block.value.source = self.replace_veriables(block.value.source) else: print "notimplemented" return self.streamfield And this is just the class which replaces $variables$ with values from my database. class CityVariables(): def replace_veriables(self, repstr): reprules = self.get_city_context() for key, value in reprules.iteritems(): repstr = repstr.replace(key, value) return repstr def get_city_context(self): context = {} if self.cityobject.population: context['$population$'] = unicode(self.cityobject.population) if self.cityobject.transregion: context['$region$'] = unicode(self.cityobject.transregion) return context -
I don't know how to display my customuser and user in same form
I have 2 models: teacher and student. They both extend User class with a OneToOneField and they both have receivers defined for creation and saving. Now, in my forms I can only display the fields from student or teacher only, the other fields that come with user I don't know how to include them. But I want that a student or a teacher won't be able to create account, unless all fields are filled in. Here are my forms and view: class StudentSignUpForm(forms.ModelForm): class Meta: model = Student fields = ('student_ID', 'photo', 'phone') class TeacherSignUpForm(forms.ModelForm): class Meta: model = Teacher fields = ('academic_title', 'photo', 'phone', 'website', 'bio') class StudentSignUpView(CreateView): model = User form_class = StudentSignUpForm template_name = 'student_signup_form.html' def get_context_data(self, **kwargs): kwargs['user_type'] = 'student' return super().get_context_data(**kwargs) def form_valid(self, form): user = form.save() login(self.request, user) return redirect('index') class TeacherSignUpView(CreateView): model = User form_class = TeacherSignUpForm template_name = 'teacher_signup_form.html' def get_context_data(self, **kwargs): kwargs['user_type'] = 'teacher' return super().get_context_data(**kwargs) def form_valid(self, form): user = form.save() login(self.request, user) return render_to_response('index.html', {'form': form},) -
ImportError: cannot import name 'users'
I am new to python , I am building djangorestframework API following below tutorial http://www.django-rest-framework.org/tutorial/quickstart/ I have configured Python 3.5 PIP 9.0.1 Django 2.0 tutorial/tutorial/urls.py from django.conf.urls import url, include from django.contrib import users from rest_framework import routers router = routers.DefaultRouter() router.register(r'users', views.UserViewSet) router.register(r'groups', views.GroupViewSet) # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ url(r'^', include(router.urls)), url(r'^users/', user.site.urls), ] Error : File "/home/pradeep/tutorial/tutorial/tutorial/urls.py", line 18, in from django.contrib import users ImportError: cannot import name 'users' -
How to provide additional data in "PUT" request for update in Django REST Framework?
Here is what I have so far: [serializers.py] class EmployeeSerializer(serializers.ModelSerializer): id = serializers.IntegerField(read_only=True) user = UserSerializer(required=False) company = serializers.CharField(read_only=True) employee_type = serializers.ChoiceField(choices=EMPLOYEE_TYPES, default='manager') is_blocked = serializers.BooleanField(required=False) def update(self, instance, validated_data): instance.user = validated_data.get('user', instance.user) instance.company = validated_data.get('company', instance.company) instance.employee_type = validated_data.get('employee_type', instance.employee_type) instance.is_blocked = validated_data.get('is_blocked', instance.is_blocked) instance.save() return instance [views.py] class EmployeeDetail(APIView): def get_employee(self, pk): try: return Employee.objects.get(pk=pk) except Employee.DoesNotExist: raise Http404 def put(self, request, pk, format=None): employee = self.get_employee(pk) serializer = EmployeeSerializer(employee, data=request.data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) else: return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) [request] http -a admin:password PUT http://localhost:8000/api/employees/list/2/ As a result I am able to update that employee with id=2, but the only thing that I am able to change is "employee_type" cause it has default value = 'manager', and if "employee_type" of that employee with id=2 is let's say "admin" after my request it will become "manager". The problem is that I can't figure out how to add some extra data to my request so I would be able to change "employee_type" to "director" for example, is something like below can be accomplished ? [request_as_I_want] http -a admin:password PUT http://localhost:8000/api/employees/list/2/employee_type='director'/company='some_value'/ Is that can be done, or I misunderstand something ? -
Django Posts not showing on live server
I made a small blog site and is not showing all the items from the database. If i try to see the posts from my phone i see only 3 posts, when in my DB there are 9. When i click on one post i got a Not Found error saying that the requested URL posts/legea etc was not found on server. This is the link that should have all of the posts: http://cohen.ro/posts/ However, if i enter in admin trhourgh site/admin i can see all of the posts in DB and when i go back to the site all of the items are out there and i can read the posts. Can someone, please help me in order to fix this?! thank you! My post List: {% extends "base.html" %} {% load crispy_forms_tags %} {% block head_title %} Blog | {% endblock %} {% block content %} <div class="container-fluid" style="width:91%;color: currentColor;!important;"> <div class="row" id="list_posts" style="background-color: white;padding-top: 40px;"> <br/> <br/> <br> {% for obj in object_list %} <div class="col-sm-4"> <div class="thumbnail"> {% if obj.image %} <img src="{{ obj.image.url }}"/> {% endif %} <div class="caption" style="color:currentColor"> {% if obj.draft %} <h3>Staff Only Draft</h3> {% endif %}{% if obj.publish > today %}<h3>Staff … -
How to use PostgreSQL ArrayAgg function on a grouped by query set in Django ORM?
To keep it simple I have four tables(A, B, Category and Relation), Relation table stores the Intensity of A in B and Category stores the type of B. A <--- Relation ---> B ---> Category I am trying to eliminate joins in my query to reduce calculations time using PostgreSQL's ArrayAgg and indexing feature of the database based on this gist. (Since there are 18000 relations, 4000 Bs, and 1500 categories my calculations of each report would take almost two hours) and the error I get is: psycopg2.ProgrammingError: aggregate functions are not allowed in GROUP BY LINE 1: ... U0."id", U2."B" HAVING U0."id" = ANY((ARRAY_AGG(... I have used Brad Martsberger solution to my previous question to calculate sum of each A's intensity occurred in B grouped by B's categories, Minimum and Maximum of calculated Intensity-sums in each category of B and the rate of occurrence of each A in each B category and the occurrence of B itself in that category : annotation0 = { 'SumIntensity': Sum('ARelation__Intensity'), 'A_Ids': ArrayAgg('id') } annotation1 = { 'BOccurrence' : Count('id', distinct=True), } sub_filter0 = Q(id__any=OuterRef('A_Ids')) sub_filter1 = Q(Category_id=OuterRef('ARelation__B__Category_id')) subquery0 = A.objects.filter(sub_filter0).values('id','ARelation__B__Category_id').annotate(**annotation0).order_by('-SumIntensity').values('SumIntensity')[:1] subquery1 = A.objects.filter(sub_filter0).values('id','ARelation__B__Category_id').annotate(**annotation0).order_by('SumIntensity').values('SumIntensity')[:1] subquery2 = B.objects.filter(sub_filter1).values('Category_id').annotate(**annotation1).values('BOccurrence')[:1] result = A.objects.values( 'id','id','ARelation__B__Category_id' ).annotate( **annotation0 ) … -
Django Ubuntu 16.04 "unsupported hash type"
I've deployed a web app to an Ubuntu 16.04 VM. I implemented the standard Django login by the books. Everything is working properly on my production environment (OS X); however, when I attempt to login I receive the error ExceptionValue: unsupported hash type Ubuntu is running python 3.5.2 OS X is running python 3.6.1 Both are running Django Version 1.11.6 My requirements.txt blessings==1.6 bpython==0.16 certifi==2017.7.27.1 chardet==3.0.4 curtsies==0.2.11 Django==1.11.6 django-extensions==1.9.6 geopy==1.11.0 greenlet==0.4.12 idna==2.6 psycopg2==2.7.3.2 Pygments==2.2.0 pytz==2017.2 requests==2.18.4 six==1.11.0 urllib3==1.22 wcwidth==0.1.7 I am using a virtual environment to run this project. The traceback path is as follows, Traceback: File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/contrib/auth/views.py" in inner 54. return func(*args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/contrib/auth/views.py" in login 150. )(request) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/views/generic/base.py" in view 68. return self.dispatch(request, *args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper 67. return bound_func(*args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper 76. return view(request, *args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func 63. return func.__get__(self, type(self))(*args2, **kwargs2) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper 67. return bound_func(*args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view 149. response = view_func(request, *args, **kwargs) File "/home/user_name/proj_folder/my_venv/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func 63. return func.__get__(self, type(self))(*args2, **kwargs2) File … -
How to read response header from upstream server in nginx
I wanted to read the custom header and proxy the request to some gateway server. My configurations: location /route { proxy_set_header User $upstream_http_user; proxy_set_header Authorization ""; proxy_pass http://127.0.0.1:3000/postdata/; proxy_method POST; } upstream server code: response = Response() response['User'] = str(user.username) response['X-Accel-Redirect']='/route' return response -
postgresql - django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "host_name" (XX.XX.XX.XX) and accepting TCP/IP connections on port 5432? typical error message while trying to set up db server. But I just cannot fix it. my django db settings: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'db_name', 'USER': 'db_user', 'PASSWORD': 'db_pwd', 'HOST': 'host_name', 'PORT': '5432', } } I added to pg_hba.conf host all all 0.0.0.0/0 md5 host all all ::/0 md5 I replaced in postgresql.conf: listen_addresses = 'localhost' to listen_addresses = '*' and did postgresql restart: /etc/init.d/postgresql stop /etc/init.d/postgresql start but still getting the same error. What interesting is: I can ping XX.XX.XX.XX from outside and it works. but I cannot telnet: telnet XX.XX.XX.XX Trying XX.XX.XX.XX... telnet: connect to address XX.XX.XX.XX: Connection refused telnet: Unable to connect to remote host If I telnet the port 22 from outside, it works: telnet XX.XX.XX.XX 22 Trying XX.XX.XX.XX... Connected to server_name. Escape character is '^]'. SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3 If I telnet the port 5432 from inside the db server, I get this: telnet XX.XX.XX.XX 5432 Trying XX.XX.XX.XX... Connected to XX.XX.XX.XX. Escape character is '^]'. same port from outside: telnet XX.XX.XX.XX 5432 Trying XX.XX.XX.XX... telnet: connect to address XX.XX.XX.XX: Connection refused telnet: Unable to connect to remote host … -
Sending AJAX data to Django view
I am trying to send text through AJAX from a template to a view and save it to a text file, however, I somehow cannot get AJAX to recognize the view. I have a debugging print statement that doesn't go off (sys.stderr.write(repr("I'm in submit text") + '\n')). I have tested AJAX outside of the GET function and it works. I think is has to be an issue with my URL's but I can't seem to find the problem. views.py def submit_text(request): text = '' sys.stderr.write(repr("I'm in submit text") + '\n') if request.method == 'GET': text = request.GET['submitted_text'] sys.stderr.write(repr("Here") + '\n') downloads_folder = ('/Users/<username>/Downloads') file_path = os.path.join(downloads_folder, 'codetext.txt') f = open(file_path, 'w') f.write(text) f.close() return HttpResponse() AJAX $(document).ready(function(){ $('#submit-button').click(function(){ var text; text = editor.getValue(); $.get('/assignments/submit/'), {submitted_text: text}, function(){ $('#submit-button').addClass('btn-sm'); }; }); }); application URL's urlpatterns = [ url(r'^$', views.user_login, name='user_login'), url(r'^logout/$', views.user_logout, name='logout'), url(r'^submit/$', views.submit_text, name='submit_text'), url(r'^(?P<assignment_name_slug>[\w\-]+)/$', views.show_assignment, name='show_assignment') ] project URL's urlpatterns = [ url(r'^$', views.index, name="index"), url(r'^assignments/', include('mainapp.urls')), url(r'^admin/', admin.site.urls), ] -
how to download a file in django
I have few files stored in /media/documents. I've also set the MEDIA_URL and MEDIA_ROOT in settings.py and have given appropriate url in urls.py. So now how can I add a link to the files present in the folder so as to download it? -
Python Django I want remove language code in url(path)
I want remove language code in url for example select en select jp select cn I want it to appear as www.abc.com instead of www.abc.com/jp, www.abc.com/cn. I want to get language code from session and activate it. not url help me urls.py urlpatterns += i18n_patterns( url(r'^', include('web.urls')), prefix_default_language=False ) helpertags.py @register.simple_tag(takes_context=True) def change_lang(context, lang=None, *args, **kwargs): """ Get active page's url by a specified language Usage: {% change_lang 'en' %} """ path = context['request'].path url_parts = resolve(path) url = path cur_language = get_language() try: activate(lang) url = reverse(url_parts.view_name, kwargs=url_parts.kwargs) finally: activate(cur_language) print("%s" % url) return "%s" % url templates.html <ul class="dropdown-menu"> {% get_available_languages as LANGUAGES %} {% get_language_info_list for LANGUAGES as languages %} {% for language in languages %} <li><a href="{% change_lang language.code %}" class="btn-lang">{{ language.code }}</a></li> {% endfor %} </ul> -
Django REST client test with specific IP
The Django REST docs read the address from META. So I have to create Whitelist model storing the ip-address/subnet for it. Not a big deal I had all 302 subnets in my database already. from rest_framework import permissions class BlacklistPermission(permissions.BasePermission): """ Global permission check for blacklisted IPs. """ def has_permission(self, request, view): ip_addr = request.META['REMOTE_ADDR'] blacklisted = Blacklist.objects.filter(ip_addr=ip_addr).exists() return not blacklisted Problem: I want to test whitelist from other ip-address rather than 127.0.0.1 How can I do that in pytest? -
How to filter a manytomany field before using to compare to another list for filtering the parent model
I need to filter results for records of individuals such that only users who are members of a program that has a non-expired release of information from the individual. Example: User Sam is a member of Program FoodDelivery Individual Mike has signed a release of information authorizing Program FoodDelivery users to see his home address. The release is good for one year from signing. When Sam goes to list all the individuals he has access to through the FoodDelivery program, Mike should initially show up. A release is expired when expiration_date__lte='today' When the Release expires, Mike should no longer show up. I've got it working to the point where users are shown only the individual records which have any release listing the user's program as authorized. How can I filter that list of released programs to only those where the release isn't expired? ``` python # simplified code for the relevant classes. class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_profile") program_list = models.ManyToManyField('Program', blank=True,) class Program(models.Model): name = models.CharField(max_length=100, blank=True, default='') individual_list = models.ManyToManyField( 'Individual', related_name='program_individual_list', through='ReleaseAuthorization', blank=True ) class Individual(models.Model): name = models.CharField(max_length=100, blank=True, default='') authorized_program_list = models.ManyToManyField( 'Program', related_name='individual_authorized_program_list', through='ReleaseAuthorization', blank=True ) class ReleaseAuthorization(models.Model): individual = models.ForeignKey( Individual, related_name="release_authorization_individual", … -
Django Updating Mode; 2 arguments needed 1given
I'm trying to create a form that will update one specific field in my Model, but I'm apparently passing too many arguments. I think I need all of them, so I don't know where the mistake is. Thanks in advance for your help. HTML <div class=assessment_container> <div id=over> <label class=labels>Results:</label> <form action= "{% url 'Project:new_entry' %}" method="POST"> {% csrf_token %} <textarea name="result"</textarea> <input class="save" type="submit" value="Save"> </form> </div> </div> Urls.py url(r'^new_entry$', views.new_entry, name = "new_entry") Views.py def new_entry(request, tableA_id): new = tableA.objects.edit('TableA_id', request.POST) return redirect('/') Models.py class TableAManager(models.Manager): def edit(self, TableA_id, postData): answer = TableA.objects.get(id=TableA_id) answer.result = postData["result"] answer.save() class TableA(models.Model): first_cat = models.CharField(max_length=50) result = models.TextField() def __str__(self): return str (self.first_cat) objects = TableAManager() -
User shows no results in shell
when im running python manage.py shell and i run the following commands, i get this result. What strikes me as odd, is that I have created 2 users in my website that can join groups. >>> from accounts.models import User >>> User.objects.all() <QuerySet []> this is my accounts/models.py file class User(auth.models.User, auth.models.PermissionsMixin): def __str__(self): return "@{}".format(self.username) However, when i run these commands below, i get the results i want. >>> from groups.models import GroupMember >>> GroupMember.objects.all() <QuerySet [<GroupMember: test2>, <GroupMember: test2>, <GroupMember: test1> groups/models.py class GroupMember(models.Model): group = models.ForeignKey(Group, related_name='memberships') user = models.ForeignKey(User, related_name='user_groups') def __str__(self): return self.user.username class Meta: unique_together = ('group', 'user') Could someone please explain to me why this happens? Running on python 3.5 in django 1.11 Thank you in advance, you guys are awesome. -
Django viewflow - Permission Denied
I understand that each flow node have six (6) REST API methods. But i don't understand about /activate_next/ and /undo/. When i try both of the methods i got an error Permission Denied. Thank you -
Django with MySQL: OperationalError (1054, "Unknown column '' in 'where clause'") when trying to query over Many-To-Many relationship
I realise that there are many previous questions with similar titles, however they are in a different context. I have not been able to find an answer that relates to Django and my particular situation. I have a Many-To-Many relationship between 2 models in Django, as shown below: class User(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True) def __unicode__(self): return self.user.username class Course(models.Model): users = models.ManyToManyField(User, through='UsersTakeCourses') title = models.CharField(max_length = 128) description = models.CharField(max_length = 1024) def __str__(self): return self.title class UsersTakeCourses(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) course = models.ForeignKey(Course, on_delete=models.CASCADE) mark = models.IntegerField() In Django's views.py, given a username, I want to query the database in order to retrieve all of the courses that particular user is taking. This is my view method: def my_courses(request, user_name): current_user = User.objects.get(username=user_name) current_user_courses = Course.objects.filter(users__pk=current_user.pk) context_dict = {'user_courses': current_user_courses} return render(request, 'FAProject_app/my_courses.html', context_dict) However, when I run the server and try to load the page this view relates to, I get the following error message: OperationalError at /firstaid/my-courses/testuser/ (1054, "Unknown column 'FAProject_app_userstakecourses.user_id' in 'where clause'") I realise this is probably a syntax error in the mySQL query, however I don't know that would happen as Django builds the query itself. Any help is much appreciated.