Dalvtor
Dalvtor

Reputation: 3286

Django - create or delete object

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

Answers (2)

dchoruzy
dchoruzy

Reputation: 349

Like.objects.filter(user=request.user, post=post).delete()
Like.objects.create(...)

Upvotes: 0

aliva
aliva

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

Related Questions