Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django save a change to Database

Tags:

django

I'm trying to update the is_admin column of the model user_profile. I've written the following code in views.py but it's not updating in the DB. How can I save the change (user_object[0].is_admin = True) to the database?

def post(self, request, format=None):
    users_provided = request.data.get('user_ids')
    for each_user in users_provided:
        user_object = UserProfile.objects.filter(user__is_active=True, user_id=each_user)
        if (user_object.exists()):
            user_object[0].is_admin = True
            user_object.update()
like image 785
Aman Sharma Avatar asked Jan 20 '26 17:01

Aman Sharma


2 Answers

You can update the item with:

def post(self, request, format=None):
    users_provided = request.data.get('user_ids')
    for each_user in users_provided:
        user_object = UserProfile.objects.filter(user__is_active=True, user_id=each_user)
        user_item = user_object.first()
        if user_item:
            user_item.is_admin = True
            user_item.save()

We can boost the efficiency significantly by writing this as:

def post(self, request, format=None):
    users_provided = request.data.get('user_ids')
    UserProfile.objects.filter(
        user__is_active=True,
        user_id__in=users_provided
    ).update(is_admin=True)
like image 122
Willem Van Onsem Avatar answered Jan 23 '26 15:01

Willem Van Onsem


Use user_object[0].save():

if (user_object.exists()):
    user_object[0].is_admin = True
    user_object[0].save()
like image 23
Amin Avatar answered Jan 23 '26 17:01

Amin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!