您现在的位置是: 网站首页 >Django Django

基于类的视图CreateView给Form添加初值

admin2018年12月19日 16:22 Django 593人已围观

# 基于类的视图CreateView给Form添加初值 知识点: 1. 直接在视图中使用`get_form_kwargs`函数,然后再函数内通过`initial`给表单传递初值。 2. 通过`get_success_url`函数使用`reverse_lazy`带参数跳转的方法,跳转到其他页面 表单 ```python class WorksForm(forms.ModelForm): category = forms.ModelChoiceField(queryset=Category.objects.all(), required=False, label='作品分类', widget=forms.Select(attrs={'class': 'form-control'})) phase = forms.ModelChoiceField(queryset=Phase.objects.all(), required=False, label='团购期数', widget=forms.Select(attrs={'class': 'form-control'})) status = forms.ChoiceField(choices=Works.Status, label='状态', widget=forms.Select(attrs={'class': 'form-control'})) class Meta: model = Works fields = '__all__' ``` 视图 ```python @method_decorator(login_required, name='dispatch') class WorksCreate(CreateView): """ 新增作品,链接加上参数:{% url 'casual:works_create' %}?phase_id={{ phase_id }} """ model = Works template_name = 'works-edit.html' form_class = WorksForm def get_form_kwargs(self): kwargs = super(WorksCreate, self).get_form_kwargs() phase_id = self.request.GET.get('phase_id') if phase_id: phase = Phase.objects.get(id=phase_id) print(kwargs) # 进入网页,该字段值:{'initial': {}, 'prefix': None, 'instance': None} kwargs.update( {'initial': {'phase': phase}} # 给表单的phase字段传递外键实例 ) return kwargs def get_success_url(self): phase_id = self.request.GET.get('phase_id') # print(phase_id) if phase_id: return reverse_lazy('casual:works_list_by_phase', kwargs={'phase_id': phase_id}) # reverse_lazy带参数跳转,键值对 else: return reverse('casual:works_list') def get_context_data(self, **kwargs): context = super(WorksCreate, self).get_context_data(**kwargs) return context ```

很赞哦! (0)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

  • 建站时间:网站已运行1258天
  • 系统信息:Linux
  • 后台程序:Python: 3.8.10
  • 网站框架:Django: 3.2.6
  • 文章统计:256 篇
  • 文章评论:57 条
  • 腾讯分析网站概况-腾讯分析
  • 百度统计网站概况-百度统计
  • 公众号:微信扫描二维码,关注我们
  • QQ群:QQ加群,下载网站的学习源码
返回
顶部
标题 换行 登录
网站