2010-07-20 3 views
1

У меня есть модель Django, которая по сути является списком слов. Это очень просто и определяется следующим образом:Django: Как получить строку из объекта CharField?

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, идентификатор этой конкретной записи.

ответ

1

Вы уверены, что правильно загрузили объекты Word? Строка в вашем примере word = Word(pk=2821) создает новый объект Word с pk из 2821 и пустое поле word. Если вы выбрали фактический объект Word из базы данных, которая имеет значение в своем поле word, то word.word должен вернуть строку. Например.

>>>> w1 = Word(pk=5, word='eggs') 
>>>> w1.word 
'eggs' 
>>>> w1.save() 
>>>> w2 = Word.objects.get(pk=5) 
>>>> w2.word 
u'eggs' 

Вы можете также проверить, что слова обрабатываются корректно сохраняются в базе данных, подключив к нему с клиентом БД и глядя на выходе:

SELECT word FROM yourappname_word LIMIT 20; 

Как я уже сказал, word.word должен работать , поэтому проблема может заключаться в том, как вы сохраняете или извлекаете объекты Word.

+0

Да, это была проблема. Ясно, что я все еще новичок в Django. Спасибо за вашу помощь. – Jeremy