Python Django:为ModelFom创建包含许多文本的Textarea小部件,以便逐行添加数据

Python Django:为ModelFom创建包含许多文本的Textarea小部件,以便逐行添加数据,python,django,django-models,django-forms,modelform,Python,Django,Django Models,Django Forms,Modelform,我为具有多个字段的模型提供了ModelFom: class UserprojectForm(forms.ModelForm): class Meta: model = Userproject fields = ['name', 'user', 'description', 'source_name', 'vk_groups', 'fb_groups', 'date_updated', 'date_until'] # widgets = { # 'vk_g

我为具有多个字段的模型提供了ModelFom:

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小部件

然后我想在创建和更新视图中使用此文本区域:

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不允许用户输入数据,用户只能从现有数据中进行选择。

您可以制作一个小部件,不难操作do@LorenzoPeña你能更详细地解释一下吗?好的,不管这个小部件是什么,只是不要在
模型表单中处理m2m关系,在表单中使用自定义
TextField
,并在表单中创建自定义函数来解析输入的数据,每行检测数据库中是否存在模型,否则创建它。使用最终的相关项列表,保存原始实例。@LorenzoPeña现在我完全按照您所描述的那样做,但是这种方法很难,我需要手动保存m2m对象,等等。我假设有一些成熟的方法,你可以制作一个小部件,这并不难do@LorenzoPeña您能更详细地解释一下吗?好的,不管小部件是什么,只是不要在
ModelForm
中处理m2m关系,在表单中使用自定义
TextField
,并在表单中创建自定义函数来解析输入的数据,对于每一行,检测数据库中是否存在模型,否则创建它。使用最终的相关项列表,保存原始实例。@LorenzoPeña现在我完全按照您所描述的那样做,但是这种方法很难,我需要手动保存m2m对象,等等。我认为有一些成熟的方法