Jor*_*dan 4 django django-models
我正在尝试通过 Django Shell 保存我的模型的值。我是 Django 的初学者。我已经装箱了三个模型。我在模型中逐一插入值。我首先创建了部门并插入了所有部门值。创建了学生并插入了所有与学生相关的值。现在我尝试在包含两个外键 StudentId 和 dept id 的课程中插入值。如何使用 Django Shell 为 Student 模型插入值。
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
from django.db import models
from django.utils import timezone
class Student(models.Model):
studentId = models.AutoField(primary_key=True)
firstname = models.CharField(max_length=50)
middlename = models.CharField(max_length=1)
lastname = models.CharField(max_length=50)
city = models.CharField(max_length=200)
registe_dt = models.DateTimeField(default=timezone.now())
def __str__(self):
return '%s %s %s' % (self.studentId, self.firstname,self.city)
class Dept(models.Model):
deptId = models.AutoField(primary_key=True)
deptName = models.CharField(max_length=200)
def __str__(self):
return '%s %s' % (self.deptId, self.deptName)
class Course(models.Model):
courseId=models.AutoField(primary_key=True)
courseName=models.CharField(max_length=100)
student = models.ManyToManyField(Student)
dept = models.ForeignKey(Dept,on_delete=models.CASCADE)
def __str__(self):
return '%s %s %s %s' % (self.courseId, self.courseName,self.student.primary_key,self.dept.primary_key)
Run Code Online (Sandbox Code Playgroud)
谢谢你对乔丹的帮助
插入外键值时可以直接插入student和dept实例:
student = Student.objects.last()
dept = Dept.objects.last()
course = Course.objects.create(courseName="My course", student=student, dept=dept)
Run Code Online (Sandbox Code Playgroud)
.last()是最后创建的,但您可以根据需要获取实例。
此外,您不需要手动创建主键。Django 自动为你做这件事。模型的每个实例都会pk自动分配一个值。也就是说,如果您不需要不同名称的主键。所以__str__方法Course可以是:
def __str__(self):
return '%s %s %s %s' % (self.courseId, self.courseName,self.student.pk,self.dept.pk)
Run Code Online (Sandbox Code Playgroud)