Как создавать модели в зависимости от разных пользователей в Django?

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

class Student(models.Model):
     id = models.CharField( max_length=7,primary_key=True)
     name = models.CharField(_('name'),max_length=8, default=""); 
     address = models.CharField(_('address'),max_length=30,blank=True,default="")    
     # comments field is not available for trial users
     # and for expert users the max_length should also a variable
     # rather than a constant
     # the switch
     if(settings.version !="trial"):
         comments = models.CharField(_("comments"),max_length=30);
     

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

  1. Где я должен хранить атрибут? Должен ли он находиться внутри settings.py? Или это должен быть атрибут клиента?

    .
  2. Если это не подходит. Должен ли я создавать разные модели для разных версий?

  3. Следует ли создавать таблицы для разных моделей, в которых только одно или двумя полями?

Вы можете создать только одну модель для него. Другая модель не нужна.

Если вы хотите, чтобы некоторые секции были доступны на моделях, вы можете создать функцию с использованием if else в вашем views.py.

Для фильтрации типа пользователя, вы должны сначала определить тип пользователя в вашей модели.

Если пользователь является пробным пользователем, вы не будете вызывать эти поля с помощью форм. Поэтому поля пробного пользователя будут нулевыми или пустыми. Если пользователь не пробный, то все поля будут доступны. Вы можете сделать это в вашем view.py и разделах шаблона с помощью форм и команд if else или используя функции фильтрации.

Я думаю, что это легкий путь для вас.

Вторым способом вы можете создать вторую модель пользователя для пользователей-экспертов.

Вернуться на верх