Django:如何从CharField对象获取字符串?

时间:2010-07-20 02:01:59

标签: string django-models

我有一个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。

1 个答案:

答案 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个对象。