Reputation: 8669
Using a nested model like this:
class Gov(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
class State(models.Model):
parent = models.ForeignKey(Gov)
abbreviation = models.CharField(max_length=100)
def __str__(self):
return self.parent.name
class State_Park(models.Model):
parent = models.ForeignKey(State)
park_name = models.CharField(max_length=100)
How would I set __str__
for class State_Park
to be name
in class Gov
?
I tried:
def __str__(self):
return self.parent.parent.name
which did not work.
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\ccsv\Envs\wenv\lib\site-packages\django\db\models\query.py", line 229, in __repr__
return '<%s %r>' % (self.__class__.__name__, data)
File "C:\Users\ccsv\Envs\wenv\lib\site-packages\django\db\models\base.py", line 589, in __repr__
u = six.text_type(self)
File "C:\Users\ccsv\Desktop\wenv\mysite\stats\models.py", line 89, in __str__
return self.parent.parent.name()
TypeError: 'str' object is not callable
Upvotes: 2
Views: 1394
Reputation:
in your real code is
return self.parent.parent.name()
just remove brackets
return self.parent.parent.name
# ^^^
Upvotes: 4
Reputation: 91
File "C:\Users\ccsv\Desktop\wenv\mysite\stats\models.py", line 89, in __str__
return self.parent.parent.name()
Based on the error log, I think you should remove the parenthesis at the end of your line.
def __str__(self):
return self.parent.parent.name
Upvotes: 3