Robin
Robin

Reputation: 5486

Check if an object exists in another models foreignkey field

I have a reviewing system for Subjects. User can review a subject, and users can like that review.

class UserReview(models.Model):
    subject = models.ForeignKey(Subject, blank=True, null=True)
    user = models.ForeignKey(User)
    review = models.TextField(null=True, blank=True)
    likes = GenericRelation('Like')

class Like(models.Model):
    user = models.ForeignKey(User)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

    class Meta:
        unique_together = (('content_type', 'object_id', 'user'),)

How do I check if a user (eg UserA) exist in the likes of a user review? For now I am doing this way:

if user_review_obj.likes.filter(user=UserA).count() > 0:
    // exist...

But I am hoping there is another better way.

Upvotes: 2

Views: 2326

Answers (1)

NS0
NS0

Reputation: 6096

You can use exists, however the correct usage is

if user_review_obj.likes.filter(user=UserA).exists():
    # . . .

Upvotes: 3

Related Questions