Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用url变量<;在基于类的视图中预填充表单;str:>;_Python_Django_Forms_Populate_Web Frameworks - Fatal编程技术网

Python 如何使用url变量<;在基于类的视图中预填充表单;str:>;

Python 如何使用url变量<;在基于类的视图中预填充表单;str:>;,python,django,forms,populate,web-frameworks,Python,Django,Forms,Populate,Web Frameworks,正如问题所说,我试图用url变量预填充表单,我的意思是表单填充url中的变量。我试图使用get initial函数,但它不起作用,因此我将分享我的代码,以便您可以看到发生了什么以及我犯了什么错误 views.py class AddPostView(CreateView): 型号=员额 form_class=PostForm 模板名称='app1/createpost.html' def get_首字母(自身,**kwargs): #返回用于此视图上窗体的初始数据。 initial=super(

正如问题所说,我试图用url变量预填充表单,我的意思是表单填充url中的变量。我试图使用get initial函数,但它不起作用,因此我将分享我的代码,以便您可以看到发生了什么以及我犯了什么错误

views.py

class AddPostView(CreateView):
型号=员额
form_class=PostForm
模板名称='app1/createpost.html'
def get_首字母(自身,**kwargs):
#返回用于此视图上窗体的初始数据。
initial=super().get_initial()
首字母['stock']=self.kwargs.get('sym'))
返回首字母
def表单_有效(自身、表单、符号):
form.instance.author=self.request.user
返回super().form_有效(form)
models.py

类股票名称(models.Model):
name=models.CharField(最大长度=255)
symbol=models.CharField(最大长度=255)
定义(自我):
返回自我符号
班级职务(models.Model):
title=models.CharField(最大长度=255)
header_image=models.ImageField(null=True,blank=True,upload_to='images/'))
author=models.ForeignKey(用户,on_delete=models.CASCADE)
body=RichTextField(blank=True,null=True)
#body=models.TextField()
post\u date=models.DateField(auto\u now\u add=True)
category=models.CharField(最大长度=255,默认值='coding')
snippet=models.CharField(最大长度=255)
likes=models.ManyToManyField(用户,相关名称='blog\u posts')
stock=models.ForeignKey(StockNames,null=True,on_delete=models.CASCADE)
def total_likes(自我):
return self.likes.count()
定义(自我):
返回self.title+'|'+str(self.author)
def get_绝对_url(自身):
返回反向('app1:article detail',args=(self.id,))
forms.py

class PostForm(forms.ModelForm):
类元:
型号=员额
字段=('title','category','body','snippet','header\u image','stock')
小部件={
'title':forms.TextInput(attrs={'class':'form control','placeholder':'title','length':'100px'}),
#'author':forms.TextInput(attrs={'class':'form control','value':'','id':'elder','type':'hidden'}),
#“作者”:forms.Select(attrs={'class':'form control'}),
'category':forms.Select(choices=choice_list,attrs={'class':'form control','placeholder':'choices'}),
“body”:forms.Textarea(attrs={'class':'form control'}),
'snippet':forms.Textarea(attrs={'class':'form control'}),
'stock':forms.Select(choices=choice_list,attrs={'class':'form control','placeholder':'choices'})
}
url.py


应用程序名称='app1'
URL模式=[
路径('add_post/',AddPostView.as_view(),name='addpost'),
]

您可以尝试在views.py()中使用get\u form\u kwargs:

您可以覆盖
get_form_kwargs
并将
stock
传递给kwargs字典。然后在
\uuuu init\uuuu()方法中,在表单上设置字段

views.py:

class AddPostView(CreateView):
    model = Post
    form_class = PostForm
    template_name = 'app1/createpost.html'
    stock = None
    
    def get_form_kwargs(self):
        kwargs = super(AddPostView, self).get_form_kwargs()
        stock = self.kwargs.get('sym')
        kwargs.update({'stock': stock})
        return kwargs
forms.py:

class PostForm(forms.ModelForm):
    
    def __init__(self, *args, **kwargs):
        stock= kwargs.pop('stock')
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['stock'] = stock

我如何在get_初始形式中应用它?你不必这样做。你的代码在两个地方。Crytal clear示例:嘿,伙计,我试过了,它说uuu init_uuuuuuuu()得到了一个意外的关键字参数“stock”Let us。