Chciałbym wiedzieć, czy istnieje sposób na zwrot podciągu w Django po pobraniu kawałka danych z kolumny w bazie danych. W takim przypadku staram się pobrać dane z kolumny "Spis treści", aby manipulować dostępną tekstem i zwrócić go.

Pobieranie metody listy pytań

def prepare_questions(subject_id, scope, sort, topic, subtopic):
   question_list = Question.objects.filter(subject=subject_id)
return question_list

Model zawierający zawartość

class Question(models.Model):
   subject = models.ForeignKey(Subject)
   content = models.TextField(verbose_name=_('Content'))

Mam nadzieję zrobić, to podjęcie danych_list z "zawartości", przekazać go przez metodę podciągnięcia w Pythonie. Nie jestem pewien, że powinienem wziąć stąd. Ponadto chciałbym zwrócić wynik metody jako część_plikatu: Nowy klawisz oznaczony do wartości zwracanej metody, ponieważ nie chcę zastąpić oryginalnego "zawartości" wartość pobrana.

Wszelkie wskaźniki lub odniesienia znacznie doceniły! Dzięki!

0
XinYi Chua 31 lipiec 2012, 20:49

2 odpowiedzi

Najlepsza odpowiedź

Zdefiniuj metodę na swoim modelu:

class MyModel(models.Model):
    ...
    def contents_substring(self):
        # do stuff
        return the_substring

Następnie w dowolnym momencie uzyskasz dostęp do instancji, niezależnie od tego, czy jest on własny, czy w pętli, możesz po prostu zrobić:

instance.contents_substring()

Lub w szablonie:

{{ instance.contents_substring }}
2
Chris Pratt 31 lipiec 2012, 18:14

Czy to jest to, czego szukasz:

return [{'substring': substring_method(q.content), 'question': q} for q in question_list]

Naturalnie będziesz musiał zdefiniować lub wymienić substring_method z dowolną potrzebną metodą poduszki Pythona.

Jaka jest ta linia, jest używa składni "list listy" Pythona, aby mapować każdy obiekt Question w question_list do słownika z dwoma elementami, tj. {X2}} (subskryg) i question (Oryginalny obiekt Question).

Oto jak możesz użyć nowego prepare_questions:

questions = prepare_questions( ... )  # whatever arguments
first_question = questions[0]  # let's assume there's at least 1
print first_question['substring']  # prints the substring of the first question's content
print first_question['question'].content  # prints the first question's full content

Aby uzyskać kompletność, oto prosty przykład "substring_method":

def substring_method(s):
    return s[1:4]  # use Python slice syntax to return 2nd through 4th chars of string
1
Ghopper21 31 lipiec 2012, 17:27