django - 多对多不保存在 django
问题描述
我的views.py文件:
表单 = ClassesForm(request.POST)
if form.is_valid():
New_Class = Classes()
New_Class.semester = Last_Semester
New_Class.year = form.cleaned_data.get('year')
if form.cleaned_data.get('year') >= 6 and form.cleaned_data.get('year') <= 8:
New_Class.school_mode = 1
else:
New_Class.school_mode = 2
New_Class.brunch = form.cleaned_data.get('brunch')
New_Class.subject = form.cleaned_data.get('subject')
New_Class.teacher.set(Staff.objects.filter(uuid=form.cleaned_data.get('teacher').uuid))
New_Class.save()
我的models.py文件:
@reversion.register() class Classes(BaseModel): 学期 = models.ForeignKey(Semester, on_delete=models.PROTECT,default=get_last_semester, verbose_name= ("Semester")) school_mode = models.IntegerField(db_index=True, Choices= SCHOOL_MODE, verbose_name= ("School Type")) year = models.IntegerField(db_index=True, Choices=CLASS_YEARS, verbose_name= ("Year")) brunch = models.CharField(max_length=2, verbose_name= ("Class Brunch" )) subject = models.CharField(max_length=15,choices=CLASS_SUBJECTS,verbose_name= ("Subject")) **teacher = models.ManyToManyField(Staff, blank=True, verbose_name= ("Class Teachers"))**
class Meta:
unique_together = ('semester', 'year', 'brunch')
ordering = ['semester', 'year', 'brunch', 'subject']
def __unicode__(self):
return "%d %s %s %s / %s" % (self.semester, self.year, self.brunch, self.subject)
auditlog.register(类)
@reversion.register() 类 Staff(BaseModel): photo = models.ImageField(upload_to="Staff/", null=True, blank=True, verbose_name= ("Photo")) user = models.OneToOneField(User, on_delete =models.PROTECT, db_index=True, verbose_name= ("User")) name = models.CharField(max_length=30, db_index=True, verbose_name= ("Name")) surname = models.CharField(max_length=30, db_index =True, verbose_name= ("Surname")) id_no = models.CharField(max_length=15, unique=True,verbose_name= ("ID Card Number")) 出生日期 = models.DateField(verbose_name= ("Birthdate")) 出生地= models.CharField(max_length=30, verbose_name= ("出生地")) 性别 = models.IntegerField(choices=GENDERS, default=None, verbose_name=("性别")) 国籍 = models.CharField(choices=NATIONALITIES, max_length=20, verbose_name= ("国籍")) blood_type = models.CharField(choices=BLOOD_TYPES, null=True, blank=True, max_length=10, verbose_name= ("血型")) phone_home = models.CharField(max_length=15, null=True, blank=True, verbose_name= ("Phone Home")) phone_mobile = models.CharField(max_length=15, null=True, blank=True, verbose_name= ("Phone Mobile")) email = models.EmailField(default=None, null=True, blank=True, verbose_name= ("Email Address")) address = models.TextField(verbose_name= ("地址")) 早午餐 = models.ForeignKey(TeacherBrunch, on_delete=models.PROTECT, verbose_name= ("Brunch")) staff_type = models。ManyToManyField(StaffType,verbose_name=("员工类型")) staff_status = models.IntegerField(choices=STAFF_STATUS, default=1, verbose_name= ("员工状态")) additional_information = models.CharField(max_length=100, null=True, blank=True, verbose_name=(“附加信息”))
class Meta:
ordering = ['name', 'surname']
def __unicode__(self):
return "%s %s" % (self.name, self.surname)
def save(self, *args, **kwargs):
self.name = self.name.title()
self.surname = self.surname.upper()
self.user.save()
super(Staff, self).save(*args, **kwargs)
解决方案
我的views.py文件:
form = ClassesForm(request.POST)
if form.is_valid():
New_Class = Classes()
New_Class.semester = Last_Semester
New_Class.year = form.cleaned_data.get('year')
if form.cleaned_data.get('year') >= 6 and form.cleaned_data.get('year') <= 8:
New_Class.school_mode = 1
else:
New_Class.school_mode = 2
New_Class.brunch = form.cleaned_data.get('brunch')
New_Class.subject = form.cleaned_data.get('subject')
New_Class.teacher.set(Staff.objects.filter(uuid=form.cleaned_data.get('teacher').uuid))
New_Class.save()
return redirect(reverse('Create-Classes'))
我的模型.py
class Classes(BaseModel):
semester = models.ForeignKey(Semester, on_delete=models.PROTECT,default=get_last_semester, verbose_name=_("Semester"))
school_mode = models.IntegerField(db_index=True, choices=SCHOOL_MODE, verbose_name=_("School Type"))
year = models.IntegerField(db_index=True, choices=CLASS_YEARS, verbose_name=_("Year"))
brunch = models.CharField(max_length=2, verbose_name=_("Class Brunch"))
subject = models.CharField(max_length=15, choices=CLASS_SUBJECTS, verbose_name=_("Subject"))
teacher = models.ManyToManyField(Staff, blank=True, verbose_name=_("Class Teachers"))
class Meta:
unique_together = ('semester', 'year', 'brunch')
ordering = ['semester', 'year', 'brunch', 'subject']
def __unicode__(self):
return "%d %s %s %s / %s" % (self.semester, self.year, self.brunch, self.subject)
class Staff(BaseModel):
photo = models.ImageField(upload_to="Staff/", null=True, blank=True, verbose_name=_("Photo"))
user = models.OneToOneField(User, on_delete=models.PROTECT, db_index=True, verbose_name=_("User"))
name = models.CharField(max_length=30, db_index=True, verbose_name=_("Name"))
surname = models.CharField(max_length=30, db_index=True, verbose_name=_("Surname"))
id_no = models.CharField(max_length=15, unique=True,verbose_name=_("ID Card Number"))
birthdate = models.DateField(verbose_name=_("Birthdate"))
birthplace = models.CharField(max_length=30, verbose_name=_("Birthplace"))
gender = models.IntegerField(choices=GENDERS, default=None, verbose_name=_("Gender"))
nationality = models.CharField(choices=NATIONALITIES, max_length=20, verbose_name=_("Nationality"))
blood_type = models.CharField(choices=BLOOD_TYPES, null=True, blank=True, max_length=10, verbose_name=_("Blood Type"))
phone_home = models.CharField(max_length=15, null=True, blank=True, verbose_name=_("Phone Home"))
phone_mobile = models.CharField(max_length=15, null=True, blank=True, verbose_name=_("Phone Mobile"))
email = models.EmailField(default=None, null=True, blank=True, verbose_name=_("Email Address"))
address = models.TextField(verbose_name=_("Address"))
brunch = models.ForeignKey(TeacherBrunch, on_delete=models.PROTECT, verbose_name=_("Brunch"))
staff_type = models.ManyToManyField(StaffType, verbose_name=_("Staff Type"))
staff_status = models.IntegerField(choices=STAFF_STATUS, default=1, verbose_name=_("Staff Status"))
additional_information = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Additional Information"))
class Meta:
ordering = ['name', 'surname']
def __unicode__(self):
return "%s %s" % (self.name, self.surname)
def save(self, *args, **kwargs):
self.name = self.name.title()
self.surname = self.surname.upper()
self.user.save()
super(Staff, self).save(*args, **kwargs)
推荐阅读
- c++ - 为什么 C++ 线程/未来的开销如此之大
- php - Laravel/Blade 存储到数据库(Route::post)
- regex - 如何仅替换特定标签内的引号
- python - 使用自定义模板标签的 Django 表单字段占位符文本
- jquery - 如何仅在图像上缩放背景(不在子元素上)
- linux - 为什么 msgsnd() 和 msgrcv() 不能正常运行?
- actionscript-3 - 编译时如何避免卸载应用程序
- php - PHP - 按数组键对数组进行排序
- kubernetes - GKE master 没有响应
- php - PHP - 如何从 txt 文件中回显随机行?