我有一个Django模型,它本质上是一个单词列表。它非常简单,定义如下:
class Word(models.Model):
word = models.CharField(max_length=100)
我需要特定的单词作为字符串对象。 (我用星号替换了单词中的所有字符,用于简单的Hangman游戏。)但是,我似乎无法将该单词作为字符串对象。
我尝试将此方法添加到Word类中,但这似乎也不起作用。
def __str__(self):
return str(self.word)
我得到一个空字符串对象而不是单词。
我需要做些什么才能将CharField的值作为字符串对象?谢谢你的帮助。
编辑:对我来说奇怪的是它返回一个整数没有问题。例如,如果我确实这样做了:
word = Word(pk=2821)
print word.id
...它将打印2821,该特定记录的ID。
答案 0 :(得分:1)
您确定要正确获取Word
个对象吗?示例word = Word(pk=2821)
中的行会创建一个新的Word
对象,其中pk
为2821,空白word
字段。如果您从数据库中获取了Word
字段中具有值的实际word
对象,则word.word
应返回一个字符串。 E.g。
>>>> w1 = Word(pk=5, word='eggs')
>>>> w1.word
'eggs'
>>>> w1.save()
>>>> w2 = Word.objects.get(pk=5)
>>>> w2.word
u'eggs'
您是否还可以通过与DB客户端连接并查看以下输出来验证单词是否正确存储在数据库中:
SELECT word FROM yourappname_word LIMIT 20;
就像我说的那样,word.word
应该有效,所以问题可能在于你如何保存或获取Word
个对象。