Tristan Brotherton
Tristan Brotherton

Reputation: 2571

Set and use flags against a users profile model in Django

I have a simple webapp in Django for an iPhone app. I want to prompt the user to review our product, but just once. I then don't want to show that prompt again.

So would the best practise way of implementing this to be to add a new entry to the user profile model with a bolean field: "reviewed" - and then set that flag when the user completes the action?

I would then check for that entry in my template and display or not, the prompt.

I've not yet worked with database models, extended the user model, or saved to custom DB fields, so any thoughts or examples on this would be most welcome. I'm a little nervous as my site has live users and I won't want to break the user tables.

Upvotes: 0

Views: 1443

Answers (2)

Natim
Natim

Reputation: 18112

If you are using MySQL or PostgreSQL, you can do some ALTER TABLE without loosing any data.

In Django, it is quite easy to add a profile for the user. Make sure, to create the profile if it doesn't exist :

try:
    profile = request.user.get_profile()
except UserProfile.DoesNotExist:
    # If DoesNotExists, Create an empty one
    profile = UserProfile(user=request.user)
    profile.save()

More information here :

Upvotes: 1

Jose Boveda
Jose Boveda

Reputation: 190

There are a variety of ways to do this. I suggest the following:

Django has a messaging framework, built by design to show messages to users only once when the software creates them. Whenever X is created/modified/deleted etc, you can add the message to the user via User.message_set.create(message='Whatever you like'). This will be shown to the user once. This relies on django sessions, which I assume you're using since you're relying on the built-in user model. These messages are stored in auth_message.

HTH

Upvotes: 0

Related Questions