Я работаю над своим первым настоящим проектом Django после многих лет программирования на PHP, и у меня возникла проблема с моими моделями. Во-первых, я заметил, что копирую и вставляю код между моделями и, будучи прилежным программистом ОО, я решил создать родительский класс, от которого другие модели могут наследовать:
class Common(model.Model):
name = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.name
class Meta:
abstract=True
Пока все хорошо. Теперь все мои другие модели расширяются до «Общие» и имеют имена и даты, которые я хочу. Тем не менее, у меня есть класс для «Категории», где имя должно быть уникальным. Я предполагаю, что должен быть относительно простой способ получить доступ к атрибуту имени из Common и сделать его уникальным. Однако разные методы, которые я пытался использовать, потерпели неудачу. Например:
class Category(Common):
def __init__(self, *args, **kwargs):
self.name.unique=True
Заставляет страницу администратора Django выдавать сообщение об ошибке "Возникла исключительная ситуация при рендеринге: у объекта" Категория "нет атрибута" имя "
Может ли кто-нибудь указать мне правильное направление?