2015-08-11 3 views
1

У меня есть модель что-то вроде этогоДжанго сохранить метод не беззвучно

class UserAttributes(models.Model): 

uuid    = models.CharField(max_length=63, null=True,blank=True) 
user    = models.OneToOneField(User) 
activation_date  = models.DateTimeField(null=True, blank=True) 
mobile_number  = models.CharField(max_length=20, null=True, blank=True) 
created_date  = models.DateTimeField(auto_now_add=True) 

def __str__(self): 
    return '{0} - {1}'.format(self.user.id, self.user.get_full_name()) 

def save(self, *args, **kwargs): 

    if not self.pk: 
     self.uuid = uuid.uuid4().hex 
     return super(UserAttributes, self).save(*args, **kwargs) 

Я переопределен метод сохранения. Но в моих взглядах, когда я вручную делаю что-то вроде

attributes.activation_date = timezone.now() 
attributes.save() 

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

ответ

5

Я заметил, что в некоторых условиях вы не называете супер в сохранении модели. Должно быть, это так

def save(self, *args, **kwargs): 

    if not self.pk: 
     self.uuid = uuid.uuid4().hex 
    return super(UserAttributes, self).save(*args, **kwargs) 

Так что, когда объект обновляется, сохранение не вызывается, поэтому данные не обновляются.

+0

Идеальный указатель, спасибо большое, я пропустил это и да, так говорит, что я не могу принять ответ до 11 минут, так что ждите его. –

+0

Отметьте это как правильный ответ, если это поможет – hspandher

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