我正在看这个例子 django-multiple-users
当我进入 sqlite shell 时
sqlite> .tables
auth_group classroom_subject
auth_group_permissions classroom_takenquiz
auth_permission classroom_user
classroom_answer classroom_user_groups
classroom_question classroom_user_user_permissions
classroom_quiz django_content_type
classroom_student django_migrations
classroom_student_interests django_session
classroom_studentanswer
models.py中有8个类
class User(AbstractUser):
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
class Subject(models.Model):
class Quiz(models.Model):
class Question(models.Model):
class Answer(models.Model):
class Student(models.Model):
class TakenQuiz(models.Model):
class StudentAnswer(models.Model):
Forms.py(在上面的 github 链接中显示)有几种形式。
表单也可以创建表格吗? classroom_user_user_permissions 从何而来?
请您参考如下方法:
Do forms also create tables?
不,表单用于询问用户的输入。它们可以“嵌入”到模板中,并且可以很容易地用于将响应解码为对象等。有些表单确实直接将(更新的)值存储在模型实例中。
但是一个表单可以对任何模型、一个模型或同时对多个模型起作用。此外,一旦表单消失,它携带的数据也会消失(当然除非它存储在模型、文件或其他持久结构中)。
Where do classroom_user_user_permissions come from?
这是因为您可能在 User 和 Userpermission 之间定义了一个 ManyToManyField。所以并不是所有的表都直接映射到模型上。有些关系需要额外的表,因为这些不能直接存储在两个表之一中。
