I am attempting to create an issue tracker similar to github’s. I’m stuck on trying to implement the assigning feature, here’s what I have so far
class Assign(models.Model): name = models.OneToOneField(User, on_delete=models.SET_NULL, null=True) class Issue(models.Model): MARK_AS = ((True, 'Open'), (False, 'Closed')) title = models.CharField(max_length=100) content = models.TextField() date_posted = models.DateTimeField(default=timezone.now) author = models.ForeignKey(User, on_delete=models.CASCADE) assignee = models.ForeignKey(Assign, on_delete=models.SET_NULL, null=True) mark_as = models.BooleanField(choices=MARK_AS, default=True) def __str__(self): return self.title def get_absolute_url(self): return reverse('issue-detail', kwargs={'pk': self.pk})
admin page I feel like I’m close, however when I try to use
class Assign(models.Model): name = models.OneToOneField(User, on_delete=models.SET_NULL, null=True) def __str__(self): return self.name
I get the error of
__str__ returned non-string (type User)
Anyone ideas on how to fix this? Thank you.
Advertisement
Answer
ERROR DESCRIPTION
str returned non-string (type User) means the Object representation method i.e Assign.__str__()
method should always return a string and not an Object like you have returned there.
SOLUTION
Change you Assign Model str() method to be like this.
def __str__(): return self.name.username
Note:
You should not always return self.user.username
like I did there, but literally you can return any field you have in a User
model with CharField
property.