created_by 不适用于 ManyToManyField django

问题描述

大家好,我正在尝试使用 django 构建一个任务管理器 Web 应用程序,我需要将任务分配给一个或多个用户我在 models.pyviews.py 中使用多条关系我' m 自动添加 created_by 用户

我的问题是,当我这样做时,我看到在分配的用户中没有选择任何用户,但如果我从表单中添加用户创建,它运行良好。

class Task(models.Model):
    task_id = models.AutoField(primary_key=True)
    shortcode = models.CharField(max_length=15,unique=True,blank=True,null=True)
    task_name = models.CharField(max_length=200)
    task_progress = models.ForeignKey(TaskProgressstatus,on_delete=models.CASCADE,null=True)
    customer_name = models.ForeignKey(Customer,null=True)
    task_priority = models.ForeignKey(TaskPriority,on_delete=models.CASCADE)
    assigned_to_employee = models.ManyToManyField(User)
    paid = models.BooleanField(default=False)
    on_account = models.BooleanField(default=False)
    currency = models.ForeignKey(Currency,null=True)
    net_amount = models.DecimalField(decimal_places=2,max_digits=20,null=True)
    vat = models.IntegerField(default=11)
    quote_validity = models.CharField(max_length=200,default='1 Month from offer date')
    delivered = models.BooleanField(default=False)
    delivered_date = models.DateTimeField(null=True,blank=True)
    creation_date = models.DateTimeField(auto_Now_add=True)
    modified_date = models.DateTimeField(auto_Now=True)
    due_date = models.DateTimeField(null=True,blank=True)
    created_by = models.ForeignKey(User,related_name='created_by_username',null=True,blank=True)
    project = models.ForeignKey(Project,on_delete=models.CASCADE)
    file_name = models.FileField(upload_to='projects_files',blank=True)
    notes = models.TextField()

    def __str__(self):
        return str(self.task_name)


@login_required
def addtask(request):
    form = taskForm()
    if request.method == 'POST':
        form = taskForm(request.POST)
        if form.is_valid():
            newform = form.save(commit=False)
            newform.created_by = request.user
            newform.save()
        return HttpResponseRedirect(request.path_info)
    else:
        context = {'form':form}
        return render(request,'tasks/add_task.html',context)

解决方法

更新

正如 Ahmed I. Elsayed 所指出的,问题的标题存在一些不一致之处,因为 created_by 字段实际上是一个 ForeignKey,而不是一个 ManyToManyField。>

话虽如此,您的问题实际上出在外键上。

我的建议是首先要确保您的表单实际上有效。你可以通过在 if form.is_valid() 块内打印一些东西来做到这一点。