class Book(Product):
isbn = models.CharField(max_length=255)
slogan = models.CharField(max_length=255)
objects = BookManager()
def save(self, *args, **kwargs):
super(Book, self).save(*args, **kwargs)
self.active = True
self.slug = self.isbn
super(Book, self).save(*args, **kwargs)
class Meta:
pass
я не проверял но думаю ,такой способ не сработает
поле(атрибут) slug появляется только когда мы сохраняем экземпляр в БД.
Но этому значению не будет куда записаться в таблицу БД.
Когда мы создаем таблицу в бд свзязанную с этой моделью (syncdb) о поле slug еще ничего не известно ,соответственно, по идее, и поля в таблице такого не будет. ( ну то есть я не думаю что Django orm шуршит по переопределенному save (), и проверяет не задали ли там поля )
и в переопределенном методе save ()
super(Book, self).save(*args, **kwargs)
должно быть наверное только в конце , а то сразу вызывается метод родительской модели и сохраняется--- но это скорее всего просто опечатка.
по поводу первоначального вороса -- думаю что если модели наследовать то в родительской модели лучше всего оставлять те поля, которые точно не нужно переопределять.
пускай таких полей будет немного, но зато точно не возникнет подобных проблем
а то ведь можно создать одну родительскую модель и 10 дочерних и потом вот так мучайся с ними -- думай потом как переопределить.))
Updated 9 Dec. 2014, 23:09 by baloon.