如何在Django的UpdateView中获取当前对象及user_guid字段数据?
在Django UpdateView中获取当前对象的user_guid字段
你可以通过UpdateView自带的get_object()方法直接获取当前正在编辑的Campaigns对象,进而拿到user_guid字段的值。以下是具体实现方式:
1. 在get_context_data方法中获取(适用于传递到模板或上下文处理)
修改你的CampaignEditor类的get_context_data方法,加入获取对象的逻辑:
class CampaignEditor(UpdateView): model = Campaigns template_name = 'mailsinfo/add_campaign.html' form_class = CampaignsForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # 获取当前编辑的Campaign对象 current_campaign = self.get_object() # 提取user_guid字段 user_guid = current_campaign.user_guid # 可选:将user_guid传入上下文,供模板使用 context['current_user_guid'] = user_guid # 保留你原有的逻辑 data = list(Emails.objects.values()) data = MailsTableWithoutPass(data) context['data'] = data return context
2. 在其他方法中获取(比如保存前的form_valid方法)
如果需要在表单验证通过、保存数据前使用user_guid,可以在form_valid方法中获取:
class CampaignEditor(UpdateView): # ... 其他原有配置 ... def form_valid(self, form): # 获取当前对象的user_guid current_campaign = self.get_object() user_guid = current_campaign.user_guid # 这里可以加入你的自定义逻辑,比如根据user_guid关联其他数据 # 示例:过滤该用户的邮件 # user_emails = Emails.objects.filter(user_guid=user_guid) return super().form_valid(form)
说明
get_object()方法会自动根据URL中配置的主键参数(通常是pk或slug)查询并返回对应的Campaigns实例,确保你URL配置正确即可正常使用。- 如果你不需要把
user_guid传递到模板,仅在视图内部使用,直接用变量存储后处理即可。
内容的提问来源于stack exchange,提问作者juniorDev
相关产品推荐
相关产品推荐

