Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Fetching data from local storage and save it in sqlite 3 using django
Am trying to fetch data from local storage and save it in SQlite3 but i dont know what to do.....anyone with an idea please by use of python django I dont know where to start anyone with idea please -
Django Graphene return data from multiple models under the same nest
I am trying to use Python Graphene GraphQL to implement a search endpoint return all products based on name. However, in my database I have three product tables that respectfully contains different product types - Cards, Tokens, Sealed Products. I want to return the data under a single nest in the Json response. The relay connection I am using is from https://github.com/saltycrane/graphene-relay-pagination-example/blob/artsy-example/README.md. Something along the lines of: Code: class MagicCards(DjangoObjectType): id = graphene.ID(source='pk', required=True) mana_cost_list = graphene.List(graphene.String) class Meta: model = magic_sets_cards interfaces = (relay.Node,) filter_fields = {'name': ['icontains']} connection_class = ArtsyConnection class MagicTokens(DjangoObjectType): id = graphene.ID(source='pk', required=True) class Meta: model = magic_sets_tokens interfaces = (relay.Node,) filter_fields = {'name': ['icontains']} connection_class = ArtsyConnection class SearchQuery(ObjectType): magic_cards = ArtsyConnectionField(MagicCards) magic_tokens = ArtsyConnectionField(MagicTokens) # pseudo code: all_products = combine(magic_cards, magic_tokens) @staticmethod def resolve_all_products(self, info, **kwargs): return @staticmethod def resolve_magic_cards(self, info, **kwargs): sql_number_to_int = "CAST((REGEXP_MATCH(number, '\d+'))[1] as INTEGER)" excluded_sides = ['b', 'c', 'd', 'e'] return magic_sets_cards.objects.exclude(side__in=excluded_sides).extra(select={'int': sql_number_to_int}).order_by('-set_id__release_date', 'set_id__name', 'int', 'number').all() @staticmethod def resolve_magic_tokens(self, info, **kwargs): sql_number_to_int = "CAST((REGEXP_MATCH(number, '\d+'))[1] as INTEGER)" excluded_sides = ['b', 'c', 'd', 'e'] return magic_sets_tokens.objects.exclude(side__in=excluded_sides).extra(select={'int': sql_number_to_int}).order_by('-set_id__release_date', 'set_id__name', 'int', 'number').all() searchSchema = graphene.Schema(query=SearchQuery) Query: { allProducts(name_Icontains: "Spellbook", first: 12, after: "") { pageCursors { previous { cursor } first { … -
Django Directory was not same in VSCode
from django.utils.translation import ugettext_lazy I got problem in this line for last 2 hours I try every method but failed, but when I checked the directory of django.utils.translation is someone else and directory of ugettext_lazy has someone else meanwhile django.utils.translation search ugettext_lazy in C:\Users\admin\AppData\Local\Programs\Python\Python310\Lib\site-packages\django\utils\translation_init_.py but the ugettext_lazy directory has in C:\Users\admin\.vscode\extensions\ms-python.python-2022.4.0\pythonFiles\lib\jedilsp\jedi\third_party\django-stubs\django-stubs\utils_init_.py How to make it same directory -
How to create a model in django that is not linked to any table in database mysql?
I have a table in firestore, and I try to create model from firestore database using firebase-orm and use admin.register(modelFireStore) in Admin django but it seems Django doesn't support register modelFirstore in admin. I need to create a model without linking to any table in mysql and I can override django's CRUD to CRUD table in firestore. Is this possible -
'Q' object has no attribute 'append'
def fetch_all_shifts_by_entity_airport(entity, airport, department): query=Q(entity=entity, airport=airport, is_delete=0) if department: query=Q(department=department,entity=entity, airport=airport, is_delete=0) return list(ShiftMaster.objects.filter(query).values()) Instead of that, how do I append above entity airport to department query I was trying this, if department: query.append(Q(department=department)) Shift_master=ShiftMaster.objects.filter(reduce(operator.and_, query, Q())) Shift_master_values= Shift_master.values() return Shift_master_values #list(ShiftMaster.objects.filter(query).values()) It gives me 'Q' object has no attribute 'append' -
debuggin drf in vscode, breakpoint not working at serializer create method
I have a nested serializer with custom create, update method. I've put multiple break points in the create method to see how things work when a Post request is made. Maybe I'm new to vscode but does the debugging work with post request? Like does it trace my localhost post method to the api? Since it never reaches the create method breakpoint I'm suspecting im doing something wrong, am new to vscode. -
How to display error message if SQL query display 0 results in django
how do i display the error message for 'ratenotfound' if my sql query for 'check' returns nothing. def rate_success(request): if request.method == "POST": error={} rater = request.session['your-email'] being_rated = request.POST['rate-email'] score = request.POST['rating'] check = "SELECT * FROM users WHERE your_email = '" + being_rated + "';" c = connection.cursor() c.execute(check) if being_rated == rater: error['rateyourself'] = 'You cannot rate yourself' return render(request, 'ratings.html', error) if check == '': error['ratenotfound'] = 'The email of the person you are trying to rate is not found in our database' return render(request, 'ratings.html', error) return render(request, 'rate success.html') Basically i am trying to display the error message when someone try to rate an invalid email that is not in the database. -
Generalize search criterion django and drf
I have ListView where i display some results on my website and i have search parameter which gives the result based on title and number here i should ignore the exact spelling and show the results for both i.e search criterion to be able to ignore "." "et al." and similar terms so that when searching titles the name doesn't have to be exact. I.E. "Toaster v fridge" will still bring up "Toaster, et al. v. Fridge" class MyListAPIView(ListAPIView): def get_filters(self, request): filters = [] id_list = request.query_params.getlist('id[]', []) if id_list: filters.append(Q(id__in=id_list)) return filters search = request.query_params.get('search', '') if search: filters.append(Q(c_number__icontains=search) | Q(title__icontains=search)) return filters -
How to have a different models.ForeignKey related_name for each linked objects of same model?
I’m working with Django Rest to have multiple “text block” objects linked with the document object. I’ve accomplished this with a simple models.ForeignKey feature so far. However, I’m rendering all of these text blocks in multiple columns in the front end. Since each block will always stay in certain columns, I figured the easiest way is to let DRF return something like the following: { "name": "Comparing Two Characters", "column_A": [ { "title": "Text Block", "body": "lorem ipsum blah blah" } ], "column_B": [ { "title": "Text Block 2", "body": "lorem ipsum blah blah" }, { "title": "Text Block 3", "body": "lorem ipsum blah blah" } ] } How would I be able to implement something like this? I’m not sure if using related fields is even ideal for such cases. I would appreciate any help! Here’s my current models.py code for reference: class Document(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) # other fields def __str__(self): return self.name class TextBlock(models.Model): id = models.AutoField(primary_key=True) document = models.ForeignKey(Document, related_name='blocks', on_delete=models.CASCADE) title = models.CharField(max_length=100) body = models.CharField(max_length=100) -
Django student here: I'm I getting a ValueError when creating a superuser using a custom made User class
I am working on a project that requires one to only create an account if their other details such as username are already in the database. For this I created a custom user class named Account and linked the username field through a OneToOne relationship to the Reg No in the Student class. I manually prepopulated the database with a single record so as to be able to create a superuser, because the creation of an account would require an existing Student record. But I am getting a value error on the terminal like so: (djangoenv) myMachine:~/Django9/eschool$ python3 manage.py createsuperuser Email: ********@**.me Username (Student.School_ID): 1 Password: Password (again): Traceback (most recent call last): File "/home/biketi21/Django9/eschool/manage.py", line 22, in <module> main() File "/home/biketi21/Django9/eschool/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 79, in execute return super().execute(*args, **options) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 157, in handle validate_password(password2, self.UserModel(**fake_user_data)) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/db/models/base.py", line 485, in __init__ _setattr(self, field.name, rel_obj) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/db/models/fields/related_descriptors.py", line 310, in __set__ super().__set__(instance, value) File "/home/biketi21/anaconda3/envs/djangoenv/lib/python3.9/site-packages/django/db/models/fields/related_descriptors.py", line 215, in __set__ raise … -
raise UnrecognizedImageError docx.image.exceptions.UnrecognizedImageError
` ` if pattern.search(para.text): if para.text.find(str("#i.aadhaarfront_image|height:200|width:200")) > -1: para._element.clear_content() path = f"media/images/{(self.userdetails).email.split('@')[0]}/{self.adharfront}" para.add_run().add_picture(path, width=Inches(6.5), height=Inches(5)) elif para.text.find(str("#i.aadhaarback_image|height:200|width:200")) > -1: para._element.clear_content() path = f"media/images/{(self.userdetails).email.split('@')[0]}/{self.adharback}" para.add_run().add_picture(path, width=Inches(6.5), height=Inches(5)) elif para.text.find(str("#i.pan_image|height:200|width:200")) > -1: para._element.clear_content() path = f"media/images/{(self.userdetails).email.split('@')[0]}/{self.panimage}" para.add_run().add_picture(path, width=Inches(6.5), height=Inches(5)) self.document.save("kyc_edited.docx")` ` how to solve this type of error while updating image in documents with help of module DOCX ,in the function add_picture. raise UnrecognizedImageError docx.image.exceptions.UnrecognizedImageError -
In this image we are using transaction.atomic and i wanna know what is ( F ) in line 44
In this image we are using transaction.atomic and i wanna know what is ( F ) in line 44 -
Update method does not support writable dotted source error when updating user profile
Getting the error The `.update()` method does not support writable dotted-source fields by default. Write an explicit `.update()` method for serializer `signup.serializers.UpdateUserSerializer`, or set `read_only=True` on dotted-source serializer fields. I would like to enable users to update their profile info. I extended the custom user class in my models.py: class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) city = models.CharField(max_length=50,blank=True) country = models.CharField(max_length=50, blank=True) bio = models.CharField(max_length=500, blank=True) profile_pic = models.ImageField(upload_to='profile/%Y/%m/%d', default='media/placeholder.png', blank=False, null=False) @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) @receiver(post_save, sender=User) def save_user_profile(sender, instance, **kwargs): instance.profile.save() here is my urls.py: path('update_profile/<int:pk>', views.UpdateProfileView.as_view(), name='update_profile'), UpdateProfileView: class UpdateProfileView(generics.UpdateAPIView): queryset = User.objects.all() serializer_class = UpdateUserSerializer def profile(request): if request.method == 'PUT': try: user = User.objects.get(id=request.user.id) serializer_user = UpdateUserSerializer(user, many=True) if serializer_user.is_valid(): serializer_user.save() return Response(serializer_user) except User.DoesNotExist: return Response(data='no such user!', status=status.HTTP_400_BAD_REQUEST) and my serializer: class UpdateUserSerializer(serializers.ModelSerializer): email = serializers.EmailField(required=False) city = serializers.CharField(source='profile.city') country = serializers.CharField(source='profile.country') class Meta: model = User #, 'city', 'country', 'bio' fields = ['username', 'email', 'password', 'first_name', 'last_name','city','country'] extra_kwargs = {'username': {'required': False}, 'email': {'required': False}, 'password': {'required': False}, 'first_name': {'required': False}, 'last_name': {'required': False}, 'city': {'required': False}, 'country': {'required': False}} def validate_email(self, value): user = self.context['request'].user if User.objects.exclude(pk=user.pk).filter(email=value).exists(): raise serializers.ValidationError({"email": "This email is already in use."}) … -
I'm trying to set geo coordinates through address using mapquest. but it give me an error[ django.contrib.gis.gdal.error.GDALException: OGR failure. ]
I'm trying to set geo coordinates through address using mapquest, gdal, gis. but it give me an error. I never used gdal and gis so i can't figue out the problem but i think there is problem on models.py. please help me to figue out the [OGR failure] error Any help would be appreciated! - Let me know if I should update this question with my settings.py or other relevant files. Here is me Logs. Environment: Request Method: POST Request URL: http://127.0.0.1:8000/admin/job/job/add/ Django Version: 4.0.3 Python Version: 3.10.4 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'corsheaders', 'django_filters', 'job.apps.JobConfig', 'django.contrib.gis'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "D:\Django\Jobbee\env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) File "D:\Django\Jobbee\env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\contrib\admin\options.py", line 683, in wrapper return self.admin_site.admin_view(view)(*args, **kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\utils\decorators.py", line 133, in _wrapped_view response = view_func(request, *args, **kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\views\decorators\cache.py", line 62, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\contrib\admin\sites.py", line 242, in inner return view(request, *args, **kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\contrib\admin\options.py", line 1885, in add_view return self.changeform_view(request, None, form_url, extra_context) File "D:\Django\Jobbee\env\lib\site-packages\django\utils\decorators.py", line 46, in _wrapper return bound_method(*args, **kwargs) File "D:\Django\Jobbee\env\lib\site-packages\django\utils\decorators.py", line 133, … -
File download using React Django? able to download file but content is missing getting file correpted error
Backend @api_view(['POST']) def download_attachment(request): body_unicode = request.body.decode('utf-8') body_data = json.loads(body_unicode) file_name = body_data['file_name'] migration_typeid = body_data['migration_typeid'] attach_type = body_data['AttachmentType'] object_type = body_data['object_type'] featurename = body_data['fname'] fid = body_data['feature_id'] filter_files = Attachments.objects.filter( Feature_Id=fid, AttachmentType=attach_type, filename=file_name) filter_values = list(filter_files.values_list()) file_path = filter_values[0] fl = open(file_path[4], 'rb') mime_type, _ = mimetypes.guess_type(file_path[4]) response = HttpResponse(fl, content_type=mime_type) response['Content-Disposition'] = "attachment; filename=%s" % file_name return response Frontend(React) const handleDownload = (att_Type, migtypeid, id, obj_type, att_name, fid) => { let body = { file_name: att_name, migration_typeid: migtypeid, object_type: obj_type, AttachmentType: att_Type, id: id, fname: detaildata.Feature_Name, feature_id: fid, responseType: "blob", }; let conf = { headers: { Authorization: "Bearer " + config.ACCESS_TOKEN(), "Content-Type": "application/json", }, }; // console.log(conf.headers); axios .post(`${config.API_BASE_URL()}/api/download_att`, body, conf) .then((res) => { fileDownload(res.data, att_name); }) .catch((err) => { }); }; i am able to download the file but content is not coming in the file for txt files it is working but other than txt not supporting getting corrupted error can you anyone tell me the solution how it works? -
'bool' object has no attribute 'id',how can i fix this error in my django project [closed]
@api_view(['POST']) @permission_classes((permissions.AllowAny,)) def login(req): email = req.data.get('email') username = req.data.get('username') password = req.data.get('password') user = TokenObtainPairSerializer( data=req.data).is_valid(raise_exception=True) if user is not None: try: token = RefreshToken.for_user(user) print(token, "Token") except Exception as e: return Response({'message': "Login Failed " + str(e)}) else: pass return Response({'message': "Login Successful"}) I was trying to make a custom simple jwt authentication with rest_framework_simplejwt but getting the error "'bool' object has no attribute 'id',can anyone explain me why this is happenning. -
How to add Latest Post Of Category Show in the Detail Article
Views.py def PostView(request,slug): Postdata = Post.objects.get(slug=slug) side_data = Post.objects.all() category_posts = Post.objects.filter(category__cat_slug=slug) return render(request,'post-detail.html',{'Postdata':Postdata,'side_data':side_data,'category_posts':category_posts}) Models.py class Category(models.Model): name = models.CharField(max_length=100) category_description = FroalaField() cat_slug = models.SlugField(max_length=200, null=False) def __str__(self): return self.name options = ( ('draft', 'Draft'), ('published', 'Published'), ) class Post(models.Model): title = models.CharField(max_length=200, unique=True) slug = models.SlugField(max_length=200, unique=True) category = models.ForeignKey( Category, on_delete=models.CASCADE,null=True,) author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='myapp_post') updated_on = models.DateTimeField(auto_now= True) content = FroalaField() feature_img = models.ImageField(upload_to = 'images/', null=False) status = models.CharField(max_length=10, choices=options, default='draft') created_on = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-created_on'] def __str__(self): return self.title Post-detail.html <h4>Related Post</h4> <br> {% for data in category_posts %} <h4>{{data.title}}</h4> {% endfor %} I'm trying to Add Category Related latest Posts in the Article. For Example If an article in which category name is Django Tutorial. In the Article Detail, I want to add the Related latest post of this category. -
htmx and django : dependant select options
I am trying to develop an app in Django where I add partials, using HTMX, everything works properly except for one critical thing. In the form I am loading from the partial, there are 2 select options, that are dependant on each others, traditionally without HTMX, I use a simple Javascript to link them both <script> $("#id_data_form").live('change', function() { var url = $("#extractor_query_builder").attr("data-fields-url"); var dataformId = $(this).val(); $.ajax({ url: url, data: { 'data_form': dataformId }, success: function (data) { $("#id_data_fields").html(data).height(150); } }); }); </script> This works fine when I work without HTMX, but when I add the HTMX way of doing it, it seems like the javascript does not find the DOM corresponding to the form elements when the form is injected in the main document my form looks like this <div hx-target="this" hx-swap="outerHTML" class="mt-3 py-3 px-3 bg-white shadow border border-gray-100"> <form class="form-horizontal" id="extractor_query_builder" method="POST" data-fields-url="{% url 'getFields' %}" novalidate> {% csrf_token %} {{ form | crispy }} {% if extract %} <button type="submit" hx-post="{% url 'update-extract' extract.id %}"> Submit </button> <button hx-get="{% url 'detail-extract' extract.id %}" type="button"> Cancel </button> {% else %} <button type="submit" hx-post="."> Submit </button> {% endif %} </form> </div> but I noticed when I submit the … -
Referencing static files in Django
FILES: settings.py STATICFILES_DIRS = [ BASE_DIR / "static" , ] base.html {% load static %} How do I reference my static files in the following line of html code?... <li class="ftco-animate"><a href="#" data-toggle="tooltip" data-placement="top" title="Facebook"><span class="ion-logo-facebook"></span></a></li> -
Invalidate Cloudfront Caching of Django Rest Framework whenever I make changes like HTTP POST/PUT
I have a django rest framework running in AWS behind a cloudfront distribution. When I call a HTTP POST or HTTP PUT to one of my APIs, the corresponding HTTP GET to the same API does not get updated. How do I invalidate my API endpoint? -
RestrictedPython: Call other functions within user-specified code?
Using Yuri Nudelman's code with the custom _import definition to specify modules to restrict serves as a good base but when calling functions within said user_code naturally due to having to whitelist everything is there any way to permit other user defined functions to be called? Open to other sandboxing solutions although Jupyter didn't seem straight-forward to embed within a web interface. from RestrictedPython import safe_builtins, compile_restricted from RestrictedPython.Eval import default_guarded_getitem def _import(name, globals=None, locals=None, fromlist=(), level=0): safe_modules = ["math"] if name in safe_modules: globals[name] = __import__(name, globals, locals, fromlist, level) else: raise Exception("Don't you even think about it {0}".format(name)) safe_builtins['__import__'] = _import # Must be a part of builtins def execute_user_code(user_code, user_func, *args, **kwargs): """ Executed user code in restricted env Args: user_code(str) - String containing the unsafe code user_func(str) - Function inside user_code to execute and return value *args, **kwargs - arguments passed to the user function Return: Return value of the user_func """ def _apply(f, *a, **kw): return f(*a, **kw) try: # This is the variables we allow user code to see. @result will contain return value. restricted_locals = { "result": None, "args": args, "kwargs": kwargs, } # If you want the user to be able to … -
Cannot find image from path
I am trying to build a web app using Django for the backend and a Bootstrap ui template for the frontend. Currently I am trying to load the CSS and images from a folder named 'static'. This image shows the packages and the path of the image I'm trying to display. This is what the site looks like when I run it on localhost and include the '{%load static%}'. This is what VS Code says when I try to follow the path using CTRL+CLICK -
handle a request in django that takes a long time to process is a lambda function and api gateway better? OR async django function
I have a function in my django rest framework api that I am working out. I suspect that it will take a long time to finish. About a minute. Given api requests expect a response I suspect this is a problem. My initial thought was set up a aws lambda function that is tied to a aws api gateway, secured by a api key. The idea being that the front end calls the api gateway url, and the url and the api key are sent over by my server only when the user who requests the url and apikey has access. But is this secure enough? Or is it better to have a django function that runs async? Meaning run the work that needs to be done async and immediately return the 200 response? Then just have another endpoint that polls the server to see if the work has been done? Can the async behavior even be done in the way I describe? https://docs.djangoproject.com/en/4.0/topics/async/ after reading the docs it doesn't seem to do what i expect it to. I guess we can't return 200 while the function works. So AWS amazon gateway seems to be the win. But I worry … -
How is the file from OneToOne Model's FileField accessed, read in views.py and passed to template?
I am developing a simple Data Visualization App, where a user can register, login upload a file and visualize its content. I am using default User model, and a Detail Model having OneToOne relation with User Model. The Detail has 3 fields, which are: OneToOne(User) FileField() TextField() Now, I want to access the file that is saved in FileField, in views.pyand read it's content, then visualize it using Python'sNumPyandMatplotlib`, then finally show visualization results on the frontend. I need a guidance that how should I start and approach this task? Basically, I need deep guidance in how to access and read the file in views.py? My models.py is: class Detail(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) file = models.FileField(verbose_name="CSV File", upload_to='csv_files/') file_desc = models.TextField("CSV File Description") def __str__(self): return ("{} ({} {})".format(self.user.email, self.user.first_name, self.user.last_name)) and in views.py, I am approaching it this way: class VisualizeAPI(View): template_name = 'accounts/visualize.html' def get(self, request): msg = {'message': "Please login to view this page."} if request.user.is_authenticated: detail, _ = Detail.objects.get_or_create(user=request.user) context = {'detail': detail} return render(request, self.template_name, context) return render(request, self.template_name, msg) and in template, I am approaching it this way: <body> <h1>Visualized Details</h1> {% if request.user.is_authenticated %} {{ detail }} {% else %} <h2>{{ message … -
Extended user class properties not updating
Would like to allow users to update their profile, getting the error Field name 'city' is not valid for model 'User'. For context, I extended my default user class in models.py: class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) city = models.CharField(max_length=50,blank=True) country = models.CharField(max_length=50, blank=True) bio = models.CharField(max_length=500, blank=True) profile_pic = models.ImageField(upload_to='profile/%Y/%m/%d', default='media/placeholder.png', blank=False, null=False) @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) @receiver(post_save, sender=User) def save_user_profile(sender, instance, **kwargs): instance.profile.save() When a user updates a profile I use this endpoint in urls.py: path('update_profile/<int:pk>', views.UpdateProfileView.as_view(), name='update_profile'), Here is my UpdateProfileView: class UpdateProfileView(generics.UpdateAPIView): queryset = User.objects.all() serializer_class = UpdateUserSerializer def profile(request): if request.method == 'PUT': try: user = User.objects.get(id=request.user.id) serializer_user = UpdateUserSerializer(user, many=True) if serializer_user.is_valid(): serializer_user.save() return Response(serializer_user) except User.DoesNotExist: return Response(data='no such user!', status=status.HTTP_400_BAD_REQUEST) and my serializers.py: class UpdateUserSerializer(serializers.ModelSerializer): email = serializers.EmailField(required=False) class Meta: model = User fields = ['username', 'email', 'password', 'first_name', 'last_name','city','country'] extra_kwargs = {'username': {'required': False}, 'email': {'required': False}, 'password': {'required': False}, 'first_name': {'required': False}, 'last_name': {'required': False}, 'city': {'required': False}, 'country': {'required': False}} def validate_email(self, value): user = self.context['request'].user if User.objects.exclude(pk=user.pk).filter(email=value).exists(): raise serializers.ValidationError({"email": "This email is already in use."}) return value def validate_username(self, value): user = self.context['request'].user if User.objects.exclude(pk=user.pk).filter(username=value).exists(): raise serializers.ValidationError({"username": "This username is already in …