Django:使用ManytoMany为ModelFom创建Textarea小部件,逐行添加数据

时间:2015-12-09 20:01:29

标签: python django django-models django-forms modelform

我有ModelFom用于包含ManytoMany字段的模型:

class UserprojectForm(forms.ModelForm):
class Meta:
    model = Userproject
    fields = ['name', 'user', 'description', 'source_name', 'vk_groups', 'fb_groups', 'date_updated', 'date_until'] 
    # widgets = {
    #     'vk_groups': forms.Textarea(attrs={'cols': 80, 'rows': 10}),
    #     'source_name': forms.Textarea(attrs={'cols': 80, 'rows': 5}),
    # }

def __init__(self, *args, **kwargs):
    super(UserprojectForm, self).__init__(*args, **kwargs)
    self.fields['vk_groups'].queryset = self.instance.vk_groups.all()

我想允许用户通过从键盘输入Enter来逐行输入数据到Textarea。然后数据将被保存到许多领域。

我找不到django这样的小部件!

然后我想在创建和更新视图中使用此textarea:

class UserprojectCreate(CreateView):
model = Userproject
#form_class = UserprojectForm
template_name = 'userproject_form.html'
success_url = reverse_lazy('userproject_list')
fields = ['name', 'description', 'vk_groups', 'source_name',  'fb_groups', 'date_updated'] 

def form_valid(self, form):
    form.instance.user = self.request.user
    return super(UserprojectCreate, self).form_valid(form) 

现在要实现这一点,我使用的是简单的表单,但从表单中保存数据非常令人头疼:

class VkwallpostgetForm(SexyModelForm):
    vk_groups= ['https://vk.com/southpark', 'https://vk.com/graph']
    vk_groups = '\r\n'.join(u'%s'%(x) for x in vk_groups) # to show data line by line

现在的主要问题是使用CreateView或UpdateView不允许用户输入数据,他只能从现有中选择。

0 个答案:

没有答案