2013-09-24 7 views
0

Я создал модель, которая CommaSeparatedIntegerFieldприлагая к CommaSeperatedIntegerfield в Джанго

models.py

class ForumPosts(models.Model): 

    .... 
    path = models.CommaSeparatedIntegerField(blank=True,max_length=50) 
    ... 

Я хочу использовать эту модель и определили мой взгляд, как показано ниже views.py

def create_forum_post(request, ..): 

    ... 
    forumpost.path.append(forumpost_id) 
    ... 

Я столкнулся с ситуацией где я должен был добавить forumpost_id, который является целым числом в путь, который был определен как CommaSeperatedIntegerField. При отладке я получил ошибку

Объект 'unicode' не имеет атрибута 'append'.

Я думаю, что это может быть из-за отсутствия запятой. Я попробовал много вариантов одного и того же кода, но не смог добавить forumpost_id в путь. Заранее спасибо

+0

Вы имели в виду объединение строк? –

+0

Я также попробовал конкатенирование строк, но его не работает. Я думаю, что это может быть исключительно для CommaSeperatedIntegerField. – user2602273

ответ

0

CommaSeparatedIntegerField Значение не будет десериализовано автоматически, единственной функцией этого типа поля является проверка (это должны быть целые числа, разделенные запятой).

Вам необходимо получить значение поля, десериализировать его, добавить новое целое число, сериализовать и сохранить его обратно.

EDIT 1:

Пример:

class ForumPosts(models.Model): 
    # ... 

    def append_to_path(self, value): 
     path_list = self.path.split(',') 
     path_list.append(value) 
     self.path = ','.join(path_list) 

Использование:

forumpost.append_to_path(forumpost_id) 
forumpost.save() # save will validate if the path is correct 
+0

. Я очень новичок в django, поэтому, если вы не возражаете, можете ли вы объяснить, как десериализовать. Я просто знаю, что это связано с json/xml, но не уверен, как реализовать в контексте CommaSeperatedIntegerField. – user2602273

+0

@ user2602273 обновлен. – mariodev

Смежные вопросы