Я работаю над своим первым настоящим проектом 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 выдавать ошибку «Обнаружено исключение при рендеринге: объект« Категория »не имеет атрибута« имя »
Может ли кто-нибудь указать мне в правильном направлении?