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!很完美!关于命名约定,实际上这是管理员关于他们需要的名称的要求。再次感谢:)