Skip to main content
 首页 » 编程设计

python之Django 如何创建表(sqlite)

2024年09月07日39dudu

我正在看这个例子 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。所以并不是所有的表都直接映射到模型上。有些关系需要额外的表,因为这些不能直接存储在两个表之一中。