django - 如何在同一 html 中创建包含主模型及其 ForeignKey 的 UpdateView 表单?
问题描述
我有一个模型,我想使用 Main 模型及其相关 ForeignKey 使用 UpdateView 表单包含 Update ,因此所需的结果将包括主模型对象及其所有相关 ForeignKey 对象
我的模型和视图如下所示
请指教
谢谢
模型
class MainTask(models.Model):
task_title = models.CharField(max_length=200)
global_task_info = models.TextField(max_length=500,default=None)
complete = models.BooleanField(default=False)
overall_precent_complete = models.PositiveIntegerField(default=0)
created_at = models.DateTimeField(default=datetime.datetime.now())
updated_at = models.DateTimeField(default=datetime.datetime.now())
due_date = models.DateTimeField(default=datetime.datetime.now())
task_location = models.CharField(max_length=400, blank=True, null=True)
global_task_assign = models.ForeignKey(UserProfile, on_delete=models.CASCADE, related_name="global_task_assign",default=1)
TASK_STATUS_CHOICES = [
('ST', 'STARTED'),
('NS', 'NOT STARTED'),
('IP', 'IN PROGRESS'),
('PA', 'PAUSED'),
('CO', 'COMPLETED'),
]
task_status = models.CharField(max_length=2,choices=TASK_STATUS_CHOICES,default='NOT STARTED')
def __str__(self):
return self.task_title
class ChildTask(models.Model):
# Relationship Fields
item_main = models.ForeignKey('MainTask',on_delete=models.CASCADE, related_name="item_main", )
task_description = models.CharField(max_length=200)
task_info = models.TextField(blank = True)
task_complete = models.BooleanField(default=False)
sub_task = models.CharField(max_length=200)
task_precent_complete = models.PositiveIntegerField(default=0)
task_created = models.DateTimeField(default=datetime.datetime.now())
task_updated_at = models.DateTimeField(default=datetime.datetime.now())
task_due_date = models.DateTimeField(default=datetime.datetime.now())
task_assign = models.ForeignKey(UserProfile, on_delete=models.CASCADE, related_name="task_assign",default=1)
def __str__(self):
return self.task_description
看法
class TaskIdUpdateView(UpdateView):
model = MainTask
template_name = "taskid_update.html"
form_class = TaskUpdateForm
fields = '__all__'
解决方案
您可以按如下方式向更新视图添加表单有效方法,并从用户配置文件中分配用户
def form_valid(self, form):
global_task_assign = UserProfile.objects.get(user=self.request.user)
form.instance.global_task_assign = global_task_assign
valid_data = super(TaskIdUpdateView, self).form_valid(form)
return valid_data
推荐阅读
- image - 谷歌搜索 API searchType = image
- node.js - NodeJS 使用 GQL 创建和 POST 文件
- javascript - 如何从 msearch 返回一个数组命中
- optimization - 模型预测控制框架中轨迹优化切换输入值能力的约束
- docker - 在 Docker 中,绑定挂载 nscd 套接字会破坏 gethostbyname
- java - 传递 Observable 列表并将其分配给对象的问题
- javascript - 函数返回承诺而不是值 - react-native / javascript
- octave - 检查八度包版本
- c++ - 类中的显式专业化:Clang 和 GCC 之间的区别
- javascript - 由表数据中的选定行填充的引导模式