Python Django:为ModelFom创建包含许多文本的Textarea小部件,以便逐行添加数据
我为具有多个字段的模型提供了ModelFom: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
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对象,等等。我认为有一些成熟的方法