Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Python Azure SDK azure.mgmt.recoveryservices.operations VaultsOperations "VaultsOperations.__init__() missing required positional arguments' Error
I'm trying to get the list of RecoveryServiceVaults by resource group name using Azure SDK package for Python azure.mgmt.recoveryservices. . I coded as follows; from azure.identity import ClientSecretCredential from azure.mgmt.recoveryservices import RecoveryServicesClient from azure.mgmt.recoveryservices.operations import VaultsOperations subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"] tenant_id = os.environ["AZURE_TENANT_ID"] client_id = os.environ["AZURE_CLIENT_ID"] client_secret = os.environ["AZURE_CLIENT_SECRET"] credentials = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret) recovery_services_client = RecoveryServicesClient(credentials=credentials,subscription_id=subscription_id) vault=VaultsOperations(recovery_services_client) vaults_in_rg = vault.list_by_resource_group(rg_name) for vault in vaults_in_rg: print(vault) And the Error I got is; TypeError: VaultsOperations.__init__() missing 3 required positional arguments: 'config', 'serializer', and 'deserializer'. I don't know what variables I should provide to create VaultsOperations() class object. Could you give some guidance ? Does anyone know what kind of variable should be provided for object to be created? Any opinions is appreciated. Thanks in advance -
How build a category model after building legacy model in Django REST Framework
Hello, I have a question about improving legacy models. The Material model is old model, and i want to make category by using new model 'type'. But i have a little problem with when i use admin site. In admin site, i hope to choose the 'type' first, and upload data .. how can i make better models # new model class MaterialType(BaseModel): type = models.CharField(choices=MaterialTypeChoice.choices, max_length=50, null=True, blank=True) def __str__(self): return self.type # old model class Material(models.Model): type = models.ForeignKey(MaterialType, verbose_name=, null=True, blank=True, on_delete=models.SET_NULL) name = models.CharField max_length=50, null=True, blank=True) size = models.CharField(max_length=50, null=True, blank=True) unit = models.CharField(max_length=5, null=True, blank=True) price_unit = models.IntegerField(null=True, blank=True) def __str__(self): return self.name serializers # new class MaterialTypeListSerializer(serializers.ModelSerializer): class Meta: model = MaterialType fields = ["type"] # old class MaterialListSerializer(serializers.ModelSerializer): class Meta: model = Material fields = ["id", "type", "name", "size", "unit", "price_unit"] views # new class MaterialTypeList(ListCreateAPIView): queryset = MaterialType.objects.all() serializer_class = MaterialTypeListSerializer # old class MaterialList(ListAPIView): queryset = Material.objects.all() filter_class = MaterialFilter serializer_class = MaterialListSerializer admin @admin.register(Material) class MaterialAdmin(ImportExportModelAdmin): list_display = ["name", "size", "unit", "price_unit"] list_display_links = ("name",) list_filter = ("type",) list_per_page = 10 # list_editable = ('type',) search_fields = ("name", "size") resource_class = MaterialResource @admin.register(MaterialType) class MaterialTypeAdmin(ImportExportModelAdmin): list_display = ["type"] list_filter … -
Render all products that relate to one of subcategories of one category, in category page
I had a question. I am creating an ecommerce website in django. There, I have categories and subcategories. When I enter to subcategory page, I able to render all products that relate to this subcategory. But, when I wanted to render all product that relate on one parent category, I am having troubles. So, I have some subcategories in one category. In that category page, I want to render all products that relate to one of subcategories of this category. Can you help me please? models.py class Category(models.Model): parent = models.ForeignKey('self', related_name='children', on_delete=models.CASCADE, blank=True, null=True) title = models.CharField(max_length=255) slug = models.SlugField(max_length=255) image = models.ImageField(null=True, blank=True, verbose_name="Изображение") ordering = models.IntegerField(default=0) is_featured = models.BooleanField(default=False) class Meta: verbose_name_plural = 'Categories' ordering = ('ordering',) def __str__(self): if self.parent is not None: return f"{self.parent}/{self.title}" return self.title @property def imageURL(self): try: url = self.image.url except: url = '' return url def get_absolute_url(self): return '/%s/' % (self.slug) class Product(models.Model): category = models.ForeignKey(Category, related_name='products', on_delete=models.CASCADE) parent = models.ForeignKey('self', related_name='variants', on_delete=models.CASCADE, blank=True, null=True) name = models.CharField(max_length=200, verbose_name="Название продукта") price = models.IntegerField(verbose_name="Цена") slug = models.SlugField(max_length=255) description = models.CharField(max_length=5000,blank=True, verbose_name="Описание:") image = models.ImageField(null=True, blank=True, verbose_name="Изображение") novinki = models.BooleanField(default=False, verbose_name="Новинки") popularnye = models.BooleanField(default=False, verbose_name="Популарные") def __str__(self): return self.name class Meta: verbose_name = … -
How to securely generate random passwords in Django?
I have imported a set of user data into a Django project. Now I need to set a random password for each of them. My question here is, how do I securely generate random passwords in Django? -
The view didn't return an HttpResponse object. It returned an unawaited coroutine instead. You may need to add an 'await' into your view
I am building a django app following this article(ERROR: Your view return an HttpResponse object. It returned an unawaited coroutine instead. You may need to add an 'await' into your view) Here is my code: import asyncio This is the add view async def save_setting(request): return HttpResponse('ok') Run command: uvicorn config.asgi:application --reload When I tried above code, it says "The view views.save_setting didn't return an HttpResponse object. It returned an unawaited coroutine instead. You may need to add an 'await' into your view." -
Django XML file upload API not getting called and [error]: method not allowed
I am working on Django project that will upload XML file via rest API and i am facing issue and not sure what it is ! i am sharing my Codes that i have written for Different Modules for [API] URL.py path('xml-file/', xmlfileview.as_view(), name='xml-file') Serializers.py class xmlfileSerializer(serializers.ModelSerializer): file = serializers.FileField() class Meta: model = xmlColumns fields = ['inputfile'] Views.py class xmlfileview(generics.CreateAPIView): serializer_class = xmlfileSerializer # parser_classes = (FileUploadParser,) def post(self, request, *args, **kwargs): token = request.META.get('HTTP_AUTHORIZATION') try: # payload = jwt.decode(token, settings.SECRET_KEY) # payload is a dictionary to decode the token to get the user id user = User.objects.get(id=payload['user_id']) # user is a function to get the user model if user.is_verified: print(user) # serializer = self.get_serializer(data=request.data) # serializer.is_valid(raise_exception=True) # serializer.save() # file = serializer.validated_data['file'] # print(file) file_obj = request.data['file'] df = pd.read_xml(file_obj) for col in df.columns: print(col) # print(df) return Response({'msg': 'file sent'}, status=status.HTTP_400_BAD_REQUEST) except jwt.ExpiredSignatureError as identifier: return Response({'error': 'Activation Expired'}, status=status.HTTP_400_BAD_REQUEST) except jwt.exceptions.DecodeError as identifier: return Response({'error': 'Invalid token'}, status=status.HTTP_400_BAD_REQUEST) Models.py class xmlColumns(models.Model): ipfile = models.FileField() -
How can I Send a additional value to views with form django?
I have an HTML form: <form action="" method="POST" enctype="multipart/form-data" onsubmit="update_button()"> {% csrf_token %} {{ form|crispy }} <div class="row" style="background-color: white"> {% for x in data %} <div style="padding: 10px;"> <label id="label1" class="{% for selectedIMG in selectedimages %}{% if selectedIMG == x.image_d %} image-checkbox-checked{% endif %} {% endfor %} image-checkbox {{x.image}}"> <img su-media-id="{{ x.image }}" height="100px" width="100px" src="/media-images/{{x.image}}" class="image-checkbox-checked" /> <i class="fa fa-check"></i> </label> </div> {% endfor %} <div class="clearfix"></div> </div> <br> <div class="form-group"> <div class="col-md-6 offset-md-3"> <input type='submit' class="btn btn-primary btn-block" /> </div> </div> </form> and a script that is making an array of the selected image and making a POST request to view: function update_button() { alert(mediaArray) $.ajaxSetup({ headers: { "X-CSRFToken": getCookie("csrftoken") }, }); $.ajax({ type:"POST", url: "{% url 'ajax-post' %}", data: {"image":String(mediaArray)}, }); } The form also and ajax also make a post request when ajax requests going then the form is being empty and when the form request going then the image (mediArray) coming empty line from I am fetching data from ajax: images = request.GET.getlist('image') I want to pass both (form & media array to view) -
cannot import name 'InvalidAlgorithmError' from 'jwt'
I'm trying to use JWT Authentication with Django Rest Framework(DRF) but I'm getting this error on trying to generate token and refresh token with 'POST' request along with user credentials on /api/token page Error : my settings.py file: # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api.apps.ApiConfig', 'rest_framework', 'rest_framework_simplejwt', ] REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_simplejwt.authentication.JWTAuthentication', ) } my urls.py file: from django.urls import path from . import views from rest_framework_simplejwt.views import ( TokenObtainPairView, TokenRefreshView, ) urlpatterns = [ path('api/', views.getRoutes), path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), ] my requirements.txt file: asgiref==3.5.0 backports.zoneinfo==0.2.1 Django==4.0.3 djangorestframework==3.13.1 djangorestframework-simplejwt==4.8.0 PyJWT==2.3.0 pytz==2021.3 sqlparse==0.4.2 tzdata==2021.5 I also tried to work this out with '5.1.0' and '5.0.0' versions of djangorestframework-simplejwt but no use I followed this documentation link: https://django-rest-framework-simplejwt.readthedocs.io/en/stable/getting_started.html# -
Get post() function from the view function returned by resolve()
I defined a class based on rest_framework.views.APIView and added it as a view to some url. For example like: from rest_framework.views import APIView from rest_framework.response import Response from django.urls import path class MyApi(APIView): def post(self, request): # Do something with the request print(request.data) return Response(status=200) path('my-url', MyApi.as_view()) In another file, I want to access the post() function of that class, but I only know the url. So I use the django.urls.resolve() function to get the view function. from django.urls import resolve view, args, kwargs = resolve(url) However, I don't want to obtain the view function, but the underlying post() function that I defined in the API-Class. Is there any option to get that function while only knowing the url? I want to avoid building a lookup for every possible url. -
DRF Nested Serializer field not appearing
I'm trying to retrieve some data from two related models however i am unable (or would like to avoid to be more precise) to change the models. The problem is that the nested serializer doesn't return the data of the first model. I have the following serializers class NameSerializer(serializers.ModelSerializer): class Meta: model = Microcontrollers fields = ['name'] class DataCUTSerializer(QueryFieldsMixin, serializers.ModelSerializer): stationName = NameSerializer(read_only=True) class Meta: model = MeasurementsBasic fields = ['stationName', 'temp', 'hum'] def to_representation(self, instance): representation = super().to_representation(instance) return {'timestamp': instance.time_taken, **representation} return representation These serializers use the following models class MeasurementsBasic(models.Model): microcontroller = models.OneToOneField('Microcontrollers', related_name='measurements_basic', primary_key=True, on_delete=models.CASCADE) time_taken = models.DateTimeField() time_received = models.DateTimeField(blank=True, null=True) frame = models.IntegerField(blank=True, null=True) temp = models.FloatField(blank=True, null=True) hum = models.FloatField(blank=True, null=True) pres = models.FloatField(blank=True, null=True) co = models.FloatField(blank=True, null=True) no2 = models.FloatField(blank=True, null=True) o3 = models.FloatField(blank=True, null=True) so2 = models.FloatField(blank=True, null=True) latitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True) longitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True) altitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True) name = models.CharField(max_length=30, blank=True, null=True) class Meta: managed = True db_table = 'measurements_basic' unique_together = (('microcontroller', 'time_taken'),) class Microcontrollers(models.Model): name = models.CharField(max_length=25) serial_number = models.CharField(max_length=20, blank=True, null=True) type = models.CharField(max_length=15, blank=True, null=True) software = models.CharField(max_length=20, blank=True, null=True) version = models.CharField(max_length=5, blank=True, null=True) date_installed = … -
Overriding restore method in Django
I would like to run a piece of code after object is restored in Django but not have it run every time save() is runed. How can I override restoration method in Django? I know it is using save() method, but I would rather have it seperate from it. Is there any way? Or if I were to use the save() method, is there a way to determine if the request is from restoration page? -
Celery workers not working with RabbitMQ after upgrade
Problem description I have a working django application using Celery along with Mongo and RMQ (3.7.17-management-alpine) The application runs on kubernetes cluster The application works fine in general But when I upgrade Celery (3.1.25) and Kombu (3.0.37) to Celery (4.1.0) and Kombu (4.1.0), I face following issue: Celery worker pods come up but do not receive the tasks I have verified that RMQ receives the messages needed to run tasks in celery workers There is no error in RMQ or celery worker pod In fact, celery pod mentions that it is connected to RMQ Strangely, when I restart the RMQ pod after Celery worker pod comes up things become fine I am able to run the new tasks in celery workers after I restart RMQ pod So I guess something happened wrt Celery/Kombu/RMQ after upgrade to 4.1.0 The code works fine with older version of Celery and Kombu. Can someone please help me wrt this? -
How to call a Django function from template and save return in a variable
Context: I have a piece of HTML that I want to dispaly in the template just in case a function return "true". Details: My function def show_avg_kpi(): return config.avg_times_visible register.filter('show_avg_kpi', show_avg_kpi) Template ( is the piece of code to display or not): {% if show_avg_kpi %} <HTML CODE> {% endif %} I want something like this, but I don't know how to save the result of the show_avg_kpi function in a variable to use it with the {% if %} tags Thank you in advance. -
Check In System by input user data in Django
I trying to do a Check In System where Students can do it themselves by input their ID's but I am really struggling. Follow views, models, forms and html VIEW class Attendance(CreateView): template_name = 'homepage.html' model = GetAttendance fields = ['aluno'] success_msg = "Check In Succesfully" def form_valid(self, form): form.save() success_msg = self.get_success_message(form.cleaned_data) if success_msg: messages.success(self.request, success_msg) return super().form_valid(form) def get_success_url(self): return reverse('attendance:homepage') def get_success_message(self, cleaned_data): return self.success_msg % cleaned_data MODELS class Aluno(models.Model): id = ShortUUIDField(primary_key=True, editable=False, alphabet="0123456789", length=5) photo = models.ImageField(upload_to='photos/', default='static/images/defaultuser.jpeg', blank=True) nome = models.CharField(max_length=255) phone = models.CharField(max_length=255) email = models.EmailField(max_length=255, unique=True) location = models.ForeignKey(MasterUser, on_delete=models.CASCADE) belt = models.CharField(max_length=255, choices=BELT) stripe = models.CharField(max_length=255, choices=GRAU) join_date = models.DateField(default=timezone.now) last_graduation = models.DateField(default=timezone.now) gender = models.CharField(max_length=255, choices=GENDER) def __str__(self): return self.nome class GetAttendance(models.Model): aluno = models.ForeignKey(Aluno, on_delete=models.CASCADE) attendance = models.DateTimeField(default=timezone.now) def __str__(self): return str(self.aluno) + ' - ' + str(self.attendance) That's views.py My models.py forms html check in page Basically what I need is instead having a choices form be able to input the student ID and run the model GetAttendance. -
Can't reach this page took too long to respond. Django, Gunicorn and Nginx. This is until I reboot my instance manually
I hosted my Django website on AWS Lightsail instance on an Ubuntu server with Nginx and Gunicorn. Everything works fine when it is running super fast everything works great, but sometimes it stops running, I can't reach the website only until I restart my lightsail instance manually. This I think happens in the interval of 24 hours (probably). I don't know why it is happening? what causing it? Someone suggested to me that it's something related to the server itself, Server goes to sleep, or something but when any request comes it can't respond to that. If there is anything that you want to see to get more info plz comment I'll add that. I don't have much idea about this problem, I'll appreciate your help. -
How to send kwargs for form MultipleChoiceField in POST view unit test
I am struggling to find the answer for testing my POST view with data. I have a form that generates the the choices options on init and the issue in my test is that I am not passing the list_of_ids required to populate the choices for the form on init so I am getting an error of "12345 is not one of the available choices." This then means my repsonse code is returing 200 as my form is not valid and failing the test. I cant work out the right way to test this or how I would pass the choices to the form in the test. class AddAccountForm(forms.Form): account_id = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices = []) def __init__(self, *args, **kwargs): self.list_of_ids = kwargs.pop('list_of_ids') super(AddAccountForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_action = 'add_account_ids' self.fields['account_id'].choices = [(id['account_id'],id['account_id']) for id in self.list_of_ids] self.helper.layout = Layout( 'account_id', Submit('submit', 'Add', css_class='btn btn-primary btn-sm ml-2'), ) the list_of_ids is coming from and api call in my view: @login_required def add_account_ids(request): api_client = api_authentication(request.user) list_of_ids = get_list__ids(api_client) if request.method == "POST": form = AddAccountForm(request.POST, list_of_ids=list_of_ids) print(request.POST) if form.is_valid(): for id in form.cleaned_data['account_id']: LinkedAccount.objects.create( account_id=id, social_provider="api", user=request.user ) return HttpResponseRedirect('/') else: print('test') form = AddAccountForm(list_of_ids=list_of_ids) context = {'form' : … -
How to query data from two tables using django?
I have mySQL tables connected with "one to many" relationship params of the main table are: name age height params of the second table are: f_name (as foreign key of ) salary_date salary I already get data from first table using this code: models.py from tabnanny import verbose from django.db import models, connections from django.urls import reverse class collection_data(models.Model): name = models.CharField(max_length=50) age =models.IntegerField() height = models.IntegerField() class Meta: verbose_name = 'Collection Data' class second_data(models.Model): # connect this table with previos data = models.ForeignKey(collection_data, on_delete=models.CASCADE) salary= models.FloatField(max_length=100) salary_date= models.DateTimeField(auto_now_add=True) class Meta: verbose_name = 'Frequent Collection Data' ordering = ['salary_date'] views.py from django.views.generic import DetailView class InfoDetailView(DetailView): model = collection_data template_name = 'info/Info.html' context_object_name = 'info' urls.py path('<int:pk>', views.InfoDetailView.as_view(), name="info-data"), Info.html <ul class="data"> <li>{{ info.name }}</li> <li>{{ info.age }}</li> <li>{{ info.height}}</li> </ul> <table> <tr> <th>Date</th> <th>Salary</th> </tr> {% for el in second_data %} <tr> <td>05/06/2021</td> <td>1350$</td> </tr> {% endfor %} </table> Result on the page must be: -
Django update or create - pre save
I am struggling with what may be a simple issue. I am trying to create a record or update if there is already an existing record in place. I am trying to override the models save function. The criteria is based on is there a user that already has an answer for their exp_type. I want ed to update it if so, if not then i want to create it. Here is what i have: class UserExperienceTypeAnswer(TimeStampedModel): NA, NONE, SOME, LOTS, EXPERT = range(5) ANSWER_CHOICES = { (NA, "Not interested"), (NONE, "None"), (SOME, "Some"), (LOTS, "Lots"), (EXPERT, "Expert"), } user = models.ForeignKey(User, models.CASCADE, null=False, blank=False) exp_type = models.ForeignKey( RecruitmentExperienceType, models.CASCADE, null=False, blank=False ) answer = models.PositiveSmallIntegerField( choices=ANSWER_CHOICES, default=NONE, blank=False, null=False ) unique_together = ["user", "exp_type"] def save(self, *args, **kwargs): record = UserExperienceTypeAnswer.objects.filter( user=self.user, exp_type=self.exp_type ).first() if not record: super(UserExperienceTypeAnswer, self).save(*args, **kwargs) else: //This is the part im unsure of. I tried to save the record from query above record.answer = self.answer super(UserExperienceTypeAnswer, record).save(*args, **kwargs) // This gives duplicate key error (which i assume is because its trying to create new record) // I also tried to create model directly but this creates recursion error (as i assume i am calling … -
I'm having an issue with this. Trying to install mysqlclient with 'pip install mysqlclient' but it's bringing out this error
Collecting mysqlclient Using cached mysqlclient-2.1.0.tar.gz (87 kB) Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. exit code: 1 [16 lines of output] /bin/sh: 1: mysql_config: not found /bin/sh: 1: mariadb_config: not found /bin/sh: 1: mysql_config: not found Traceback (most recent call last): File "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "/tmp/pip-install-hyrw6bdf/mysqlclient_3a83953da9be4f2d8196d1a7de0c4479/setup.py", line 15, in <module> metadata, options = get_config() File "/tmp/pip-install-hyrw6bdf/mysqlclient_3a83953da9be4f2d8196d1a7de0c4479/setup_posix.py", line 70, in get_config libs = mysql_config("libs") File "/tmp/pip-install-hyrw6bdf/mysqlclient_3a83953da9be4f2d8196d1a7de0c4479/setup_posix.py", line 31, in mysql_config raise OSError("{} not found".format(_mysql_config_path)) OSError: mysql_config not found mysql_config --version mariadb_config --version mysql_config --libs [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. note: This is an issue with the package mentioned above, not pip. -
Using concurent.futures raise me a strange AttributeError on django python with channels
I'm facing an issue trying to use the concurrent.futures package in python. I'm working on a website using django and channels to perform asynchronous comunication. I have to load data from many url and i want to be able to do it with multiprocessing. Unfortunately i'm enable to make this code work as it always give me an AttributeError. Could it be related to the architecture of django or channels ? I'm using the ProcessPoolExecutor in a channels receive() function inside a WebSocket Object. Here is a sample of my code : class CreateValuesConsumer(WebsocketConsumer): def connect(self): self.accept() def disconnect(self, close_code): pass def create_single_value(self, card): print('start create_single_value') condition = Condition.objects.filter(short_name='NM')[0] card_language = Language.objects.filter(short_name='FR')[0] seller_origin = Language.objects.filter(short_name='FR')[0] value = card.create_value(condition, card_language, seller_origin) if value is not None: message = "models.value." + str(value.id) + ' : create | card_name = ' \ + card.name_en.lower() + " | price = " + str(value.cheaper_price) is_error = 0 else: error = ParsingError.objects.filter(card=card)[0] message = error.message is_error = 1 self.send(text_data=json.dumps({ 'message': message, 'is_error': is_error })) print('end') def receive(self, text_data): json_data = json.loads(text_data) extension = Extension.objects.get(pk=json_data["id"]) cards_to_value = Card.objects.filter(extension=extension) today = datetime.now() for card in cards_to_value: values = Value.objects.filter(card=card, date__year=today.year, date__month=today.month, date__day=today.day) for value in values: print('delete' + … -
Is it possible to access to the admin page once the application is uploaded to the internet? | Django
I'm very new on django and I want to ask just a simple question: in the developing phase, I can easily access to the admin page of django. I'm wondering if this is still possible to do when the website will be uploaded. I'm sorry for the trivial question, hope you will help me. -
problems puling data out of django database and testing it
really sorry but a complete beginner here with Django and Python. I am trying to pull some data out of a database so I can assert against it in the testing faze but I am having problems understanding how to get the data out of the model. Any help would be appreciated. My code: Models.py class CurrentAccountState(AccountState): enable_personal_profile = models.BooleanField(default=False) class CurrentAccountSetting(TimestampedModel): ACCOUNT_SEND_TO_OPTIONS = ( ("buyer", _("Receipt sent to the buyer")), ("payment_profile_contact", _("Receipt sent to payment profile contact")), ) account_state = models.ForeignKey( CurrentAccountState, related_name="account_settings", on_delete=models.CASCADE ) payment_profile_id = models.CharField(max_length=36) send_to = models.CharField(max_length=32, choices=SEND_TO_OPTIONS, default="buyer") views.py @action(detail=True, methods=["post"]) def update_state(self, request, pk=None): integration = AccountServiceManager.get_by_name(str(pk)) if not account: raise Http404() return Response("", status=status.HTTP_200_OK) test update_state.py def test_update_state(self): user = self.admin_user self.client.force_login(user) account = AccountFactory( name="account name", enabled=True, provider=str_to_kebab_case("account name") ) payload = { "enable_personal_profile": True, "payment_profile_settings": [ { "payment_profile_id": "Something", "send_to": "buyer", }, { "payment_profile_id": "Something else", "send_to": "payment_profile_contact", } ] } response = self.client.post(f"{self.url}/account/update_state", data=json.dumps(payload), content_type="application/json") assert response.status_code == status.HTTP_200_OK account_account = CurrentAccountSetting.objects.all() assert len(account_account) == 1 assert account_account.enable_personal_payment_profile is True What I am struggling with is understanding how I can pull the data out of the actual database so I can make assertions in the test. Currently the len(account_account) … -
Different users/groups should see different rows when editing post?
Let's say, I have a model: class Post(models.Model): title = models.charfield(max_length=50) content = models.TextField() approved = models.BooleanField(default=False) and I have 2 user groups/types: editor manager Managers can make posts and edit every line of it (title, content, approved). Editors should only be able to edit certain rows, such as Title and Content, they shouldn't be able to edit the approved field, they shouldn't even see it. Is there a way to do this? I want to hide some inputs based on the user's role/group they're in. -
How to make/use Navigations Menu for Header and Sider in ReactJS using Django Rest API?
Hi There, I want to make my header menu using Django Rest API based on roles/groups. I am using ReactJS as Frontend and Django as Backend. It's like users can see and use links based on their roles/Groups in the Rest api. Any Idea? -
Django model validation not raising Exception on full_clean()
I have a Model and ModelForm with custom validator (which only allows "H" or "A" in the CharField): def home_away_valid(value): return value == 'H' or value == 'A' class Team(models.Model): name = models.CharField(max_length=180) home = models.CharField(max_length=2, validators=[home_away_valid], default='H', db_index=True) class TeamForm(ModelForm): class Meta: model = Team fields = ['home', 'name'] However when I run full_clean() with another value (not H or A) it doesn't not raise a validation exception: try: team = TeamForm({ 'name': 'Test Team', 'home': 'S' }) team.full_clean() new_team = team.save() print(new_team.id) except ValidationError as e: print(e) Why does this not raise an Exception? (I have tried doing the full_clean() on both the ModelForm and Model, neither raises an Exception)