Roman Nozhenko
Roman Nozhenko

Reputation: 628

Set id for None object

I have model for my comments:

class Comment(models.Model):
    body = models.CharField(max_length=255, verbose_name="comment")
    message = models.ForeignKey(Message, on_delete=models.CASCADE, related_name="comments", verbose_name="message")
    author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="author")
    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children', verbose_name='parent', default=None)
    posted = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="posted")
    edited = models.DateTimeField(auto_now=True, auto_now_add=False, verbose_name="edited")

def __str__(self):
    return self.body

def get_create_url(self):
    return reverse('wall:add-comment', kwargs={'id': self.message.id, 'pk': self.parent.id})

def get_update_url(self):
    return reverse('wall:edit-comment', kwargs={'id': self.id})

I need to get an id for parent.id if parent is none.

Upvotes: 0

Views: 229

Answers (1)

JPG
JPG

Reputation: 88569

First of all, you can't access the parent_id if there is no parent. (You can't drive your own car if you don't have one)

If you want to return some data if parent is None, try this

comment = Comment.objects.get(id=instance_id)
if not comment.parent:
    return comment.id
return comment.parent_id

This will return parent_id if it has a parent else it will return it's own id

Upvotes: 2

Related Questions