禁止使用save()以防止由于未保存的相关对象'task_title'而导致数据丢失

时间:2019-08-04 09:41:14

标签: django database django-models django-forms django-views

我正在尝试创建Task并将其与中介模型的相关信息插入中介表中,但出现以下错误。

save() prohibited to prevent data loss due to unsaved related object 'task_title'.

我的模型。py

class Task(models.Model):

    id                  = models.AutoField(primary_key=True)
    task_audit_title    = models.ForeignKey(MainAudit,on_delete= models.CASCADE, related_name='audit_title_for_task',verbose_name= ('Audit Title'))
    task_subtask_name   = models.ManyToManyField(SubTask, related_name='subtask_for_task',verbose_name= ('Subtask Title'))
    task_subject        = models.CharField(verbose_name= ('Task Subject'),max_length=100,blank=False)
    task_description    = models.CharField(verbose_name= ('Task Description'),max_length=1000,blank=True)
    task_assign_to      = models.ManyToManyField(User, related_name='task_assign_to', through='TaskComplete')
    task_assign_by      = models.ForeignKey(User,on_delete= models.CASCADE, related_name='task_crt_by')
    task_deadline       = models.DateTimeField(null=True,blank=True)
    task_perticulars    = models.ManyToManyField(Perticular, related_name='task_perticular', blank=True)
    task_created_time   = models.DateTimeField(default=timezone.now)
    task_modified_by    = models.ForeignKey(User,on_delete= models.CASCADE, related_name='task_mod_by', null=True, blank=True)
    task_modified_time  = models.DateTimeField(null=True,blank=True)
    is_del              = models.BooleanField(default=0)

    class Meta:
        permissions = (
            ("change_temp_delete_task", "Can delete temporarily"),
        )

    def __str__(self):
        return self.task_subject

    def get_absolute_url(self):

        return reverse('create-task')


class TaskComplete(models.Model):
    id                  = models.AutoField(primary_key=True)
    task_title          = models.ForeignKey(Task,on_delete= models.CASCADE, related_name='assigned_task')
    is_completed        = models.BooleanField(default=0)
    task_cmt_by_doer    = models.CharField(verbose_name= ('Submit Comment'),max_length=100,blank=True)
    completed_by        = models.ForeignKey(User,on_delete= models.CASCADE, related_name = 'task_completed_by')
    completed_time      = models.DateTimeField(null=True,blank=True)

我的views.py

class TaskCraeteView(LoginRequiredMixin,CreateView):

    model=Task
    success_message = " Task Craeted successfully!"
    reverse_lazy('create-task')
    login_url = 'login'
    template_name = 'create-task'
    form_class = TaskCreateForm

    def form_valid(self,form):
        print(self.kwargs)
        for users in form.cleaned_data['task_assign_to']:
            TaskComplete.objects.create(completed_by=users, task_title= form.instance)
        form.instance.task_assign_by = self.request.user
        return super(TaskCraeteView, self).form_valid(form)

在创建任务时如何在中间表中插入数据?我试图获取发布的数据的主键,并为其分配task_title,但我做不到。任何帮助表示赞赏。

0 个答案:

没有答案