deadlock
deadlock

Reputation: 7330

How to set a Django Boolean value to True when by default, it is false?

I have a django view where users can sign up. For any user who signs up from this point forward, I would like to set the boolean value to True.

 class Person(models.Model):
      user = models.OneToOneField(User, primary_key=True)
      facebook_id = models.CharField(max_length=225, unique=True, null=True, blank=True)
      twitter_id = models.CharField(max_length=225, unique=True, null=True, blank=True)
      suggested_person = models.BooleanField(default=False)
      userPic = models.CharField(max_length=128, blank=True)
      phoneNum = models.CharField(max_length=128, blank=True)

Sign-Up Django view:

 @csrf_exempt
 def signup(request):

     if request.method == 'POST':
         # Parse the JSON
         data = json.loads(request.raw_post_data)
         # Check if the user already exists
         if User.objects.filter(username = data['username']).exists():
             return HttpResponse("Username already exists")

         # If not then create new user with the supplied info
         else:
             newUser = User()
             newUser.username = data['username']
             newUser.email = data['email']
             newUser.set_password(data['password'])
             newUser.first_name = data['firstName']
             newUser.last_name = data['lastName']
             newUser.save()

             newPerson = Person(user = newUser, phoneNum = data['phoneNum'], userPic = data['userPic'], userCover = data['userCover'])
             if 'token' in data:
                 if Person.objects.filter(token=data['token']).exists():
                     oldToken = Person.objects.get(token=data['token'])
                     oldToken.token = None
                     oldToken.save()
                     newPerson.token = data['token']
                     newPerson.save()
                 else:
                     newPerson.token = data['token']
                     newPerson.save()

     #perhaps like this? newPerson.suggested_person =True
             newPerson.save()
             newUser.relationships.add(newUser)

             return HttpResponse(str(newUser.id))

     # If not POST  
     else:
         return HttpResponse("Signup here People")

How can I go about making any user who signs up from this point forward a 'suggested_person'?

Upvotes: 1

Views: 3912

Answers (1)

Peter DeGlopper
Peter DeGlopper

Reputation: 37364

If you can't or don't want to change the default definition on your model, you can either pass in your desired value when creating your Person instance:

newPerson = Person(user = newUser, phoneNum = data['phoneNum'], userPic = data['userPic'], userCover = data['userCover'], suggested_person=True)

Or you can set the attribute prior to saving:

newPerson.suggested_person = True

Upvotes: 3

Related Questions