Reputation: 3286
I am wondering what is the best way of creating (if it doesn't exist) or deleting (if it does exist) an object in Django.
I know I can do something like this:
if Like.objects.filter(user=request.user, post=post).exists():
Like.objects.filter(user=request.user, post=post).delete()
else:
Like.objects.create(user=request.user, post=post)
Is there a better way, like for instance the get_or_create
method that Django provides?
Upvotes: 4
Views: 4264
Reputation: 349
Like.objects.filter(user=request.user, post=post).delete()
Like.objects.create(...)
Upvotes: 0
Reputation: 5720
If it's a single object do this:
try:
Like.objects.get(user=request.user, post=post).delete()
except Like.DoesNotExist
Like.objects.create(...)
Upvotes: 9