Mysql 无法将外键的值更改为对象Django的外键

Mysql 无法将外键的值更改为对象Django的外键,mysql,django,django-models,django-queryset,Mysql,Django,Django Models,Django Queryset,我的模型结构如下: class user(models.Model): name = models.CharField(max_length=100) tasks = models.IntegerField(default=0) class project(models.Model): worker = models.ForeignKey(user, on_delete=models.CASCADE) project_name = models.CharFi

我的模型结构如下:

class user(models.Model):
    name = models.CharField(max_length=100)
    tasks = models.IntegerField(default=0)



class project(models.Model):
    worker = models.ForeignKey(user, on_delete=models.CASCADE)
    project_name = models.CharField(max_length=100)


class task(models.Model):
    project = models.ForeignKey(project, on_delete=models.CASCADE)
    task_name = models.CharField(max_length=150)
    expected_date = models.DateField(auto_now=False,auto_now_add=False,)
    actual_date = models.DateField(auto_now=False,auto_now_add=False,blank=True,null=True,)
我想遍历任务列表,如果实际日期字段不为空,即任务已完成,则将用户类中的任务字段更新1。我编写了以下代码:

a = task.objects.filter(actual_date__isnull=False)
for x in a:
    x.project.worker.tasks+=1

然而,这并没有产生预期的结果。我该怎么办?

修改对象后,您没有保存对象-只是修改值不会将其写入数据库。请尝试以下方法:

a = task.objects.filter(actual_date__isnull=False)
for x in a:
    worker = x.project.worker
    worker.tasks += 1
    worker.save()

在单独的注释中,你应该考虑下面的PEP8约定,并使用CAMELSE作为你的类名。目前,您可以很容易地将类与对象混淆。

非常感谢@solarismoke!很完美!关于命名约定,实际上这是管理员关于他们需要的名称的要求。再次感谢:)