django python 修改外來鍵從表的非主鍵欄位值的方法
阿新 • • 發佈:2021-01-21
如何修改從表Category表中的parent_project對應從表的need_create_file欄位的值?
class Category(models.Model): id = models.UUIDField(auto_created=True,default=uuid.uuid1,primary_key=True,editable=False,db_index=True,blank=False,unique=True,verbose_name='分類主鍵',help_text='分類主鍵') name = models.CharField(max_length=200,blank=False,verbose_name='元件名',help_text='元件名') desc = models.CharField(max_length=200,blank=True,verbose_name='元件描述',help_text='元件描述') category_type = models.IntegerField(choices=settings.CATEGORY_TYPE,verbose_name='元件級別',help_text='元件級別') status = models.IntegerField(default=0,verbose_name='元件狀態',help_text='元件狀態') create_time = models.DateTimeField(verbose_name='建立時間',default=datetime.now,help_text='建立時間') create_user = models.ForeignKey(User,null=True,blank=True,related_name='category_create_user',help_text='建立使用者',verbose_name='建立使用者',on_delete=models.SET_NULL) attorn_time = models.DateTimeField(verbose_name='修改時間',default=datetime.now,help_text='修改時間') attorn_user = models.ForeignKey(User,null=True,blank=True,related_name='category_attorn_user',help_text='修改使用者',verbose_name='修改使用者',on_delete=models.SET_NULL) parent_category = models.ForeignKey('self',null=True,blank=True,default=None,db_index=True,help_text='所屬模組',verbose_name='所屬模組',related_name='child',on_delete=CASCADE) parent_project = models.ForeignKey(ProjectAuto,null=True,blank=True,db_index=True,default=None,help_text='歸屬專案',verbose_name='歸屬專案',to_field='auto_id')
class ProjectAuto(models.Model):
"""
指令碼執行
"""
auto_id = models.UUIDField(auto_created=True,default=uuid.uuid1,primary_key=True,db_index=True,blank=False,unique=True,verbose_name='專案主鍵',help_text='專案主鍵')
project_id = models.ForeignKey(Project,verbose_name='案例專案編號',help_text='案例專案編號',blank=True,null=True,related_name='auto_cate')
create_time = models.DateTimeField(verbose_name='建立時間',default=datetime.now,help_text='建立時間')
create_user = models.ForeignKey(User, null=True, blank=True, verbose_name='建立使用者',help_text='建立使用者',related_name='create_user',on_delete=models.SET_NULL)
attorn_user = models.ForeignKey(User, null=True, blank=True, verbose_name='授權使用者',help_text='授權使用者',related_name='attorn_user',on_delete=models.SET_NULL)
attorn_time = models.DateTimeField(null=True, blank=True,verbose_name='授權時間',default=None,help_text='授權時間')
project_name = models.CharField(unique=True,null=False, blank=False,max_length=200,verbose_name='專案名稱',help_text='專案名稱')
project_path = models.CharField(default=settings.JOB_FILES_PATH,max_length=300,verbose_name='專案存放路徑',help_text='專案存放路徑')
allow_other_edit = models.BooleanField(verbose_name='是否允許其它使用者編輯',default=False,help_text='是否允許其它使用者編輯')
need_create_file = models.BooleanField(verbose_name='是否需要重新生成實體工程',default=True,help_text='是否需要重新生成實體工程')
old_project = models.BooleanField(verbose_name='是否舊工程',default=False,help_text='是否舊工程')
version = models.DecimalField(default=0.1,blank=True,decimal_places=1,max_digits=10,help_text='元件版本號',verbose_name='元件版本號')
dept_project_name = models.CharField(null=True, blank=True,default=None,max_length=200,verbose_name='倉庫專案名稱',help_text='倉庫專案名稱')
實現方法:
cate_obj=Category.objects.filter(pk=category_id).first() category_ = category_obj.parent_category.parent_project category_.need_create_file=True category_.save()