del3d
Дек. 16, 2010 09:08:56
Пытаюсь начать спроектировать БД для организации, в которой имеются служащие разных должностей..
у каждой должности имеется набор обязанностей..
для каждого конкретного служащего обязанности могут быть уточнены..
Стоит ли хранить данные о служащих в Джанговских таблицах (auth_user, auth_group..) или лучше сделать свои таблицы (пользователи, привилегии, должности)?
maxwell
Дек. 16, 2010 09:35:24
http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-usersБуквально недавно столкнулся с такой же проблемой.
И все решил стандартными django средствами, без велосипедов и даже мопедов (он не мой, я просто разместил объяву).
У меня получилось что-то вроде:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
def __unicode__(self):
return _('%s\'s profile') % self.user
def user_post_save(sender, instance, **kwargs):
UserProfile.objects.get_or_create(user=instance)
models.signals.post_save.connect(user_post_save, sender=User)
И в нужной вьюшке:
user = request.user
profile = user.get_profile()
Ferroman
Дек. 16, 2010 12:17:47
Да, maxwell прав, такие вещи решаются использованием профайла и/или дополнительных моделей расширяющих стандартную модель пользователя.
del3d
Дек. 16, 2010 15:32:57
Понятно, спасибо за совет..
del3d
Дек. 17, 2010 11:14:17
У меня мозг отключается, когда кто-то (Django) изменяет структуру моей БД..
Ferroman
Дек. 17, 2010 18:01:40
Что вы имеете в виду? Джанга не меняет структуру БД в процессе работы. Только явно, на syncdb, например.
del3d
Дек. 17, 2010 19:49:10
да, точно.. это я что-то не привык еще.. надо просто не пользоваться syncdb, когда БД уже имеется и тем более, когда с ней (БД) могут работать другие приложения..
а auth/auth попробую написать сам.. по той же причине (с БД будут работать и другие GUI приложения)..
Ferroman
Дек. 17, 2010 23:57:52
При изменениях в коде, затрагивающих рабочую БД, пишите миграционные скрипты вручную.