Вы можете попробовать эту функцию:
function textToArray(){
var someArray = [];
var nameList = $("#txtArea").val();
$.each(nameList.split(/\n/), function (i, name) {
// empty string check
if(name != ""){
someArray.push(name);
}
});
взято из: КОНВЕРТ TEXTAREA СОДЕРЖИТСЯ ДЛЯ Массива с использованием JQUERY
Когда вы обнаружите, что используете сигнал post_save для обновления объекта класса отправителя, скорее всего, вы должны вместо этого переопределить метод сохранения. В вашем случае определение модели будет выглядеть так:
class Test(models.Model):
title = models.CharField('title', max_length=200)
blah = models.CharField('blah', max_length=200)
def save(self, force_insert=False, force_update=False):
if not self.blah:
self.blah = 'hello'
super(Test, self).save(force_insert, force_update)
Разве обработчик post_save не берет экземпляр? Почему вы фильтруете с его помощью? Почему бы просто не сделать:
def my_handler(sender, instance=False, created, **kwargs):
if created:
instance.blah = 'hello'
instance.save()
Ваш существующий код не работает, потому что он зацикливается, а Test.objects.filter (id = instance.id)
возвращает набор запросов, а не объект. Чтобы получить один объект напрямую, используйте Queryset.get ()
. Но здесь этого делать не нужно. Аргумент created не дает ему зацикливаться, так как он устанавливает его только в первый раз.
В общем, если вам абсолютно не нужно использовать сигналы post_save, вы все равно должны переопределить метод save () вашего объекта.