gpt4 book ai didi

django - Django:是否可以在一个通用 View 中验证和保存多种形式的字段?

转载 作者:行者123 更新时间:2023-12-02 04:09:14 25 4
gpt4 key购买 nike

我有2个型号:

class Person( models.Model ):
username = models.CharField
name = models.CharField( max_length = 30 )
surname = models.CharFields( max_length = 30 )
...

class PersonSkills( models.Model ):
person = models.ForeignKey( Person )
skill = models.CharField( max_length = 30 )
...

我想在一个 View 中将数据添加到Person和PersonSkills。

现在,我有了类似于下一个的RegisterView:
class RegisterForm( ModelForm ):
class Meta:
model = Person
fields = ( 'username', 'name', 'surname', 'password', )

class RegisterView( FormView ):
form_class = RegisterForm
success_url = "/welcome/"
template_name = "register.tmpl"
is_valid = True
def form_valid( self, form ):
form.save()
self.is_valid = True
return super( RegisterView, self ).form_valid( form )
def form_invalid( self, form ):
self.is_valid = False
return super( RegisterView, self).form_invalid( form )
...

那么,如何在一个 View 中将数据添加到Person和PersonSkills?从FormView继承仅允许一个form_class。

最佳答案

实现所需目标的最佳方法是创建一个自定义表单,该表单声明两个模型所需的字段。通过访问save中的字段,使用表单的cleaned_data方法将其保存到各个模型类。

然后,您的FormView将按预期工作。它将接收两个不同模型的输入,但是逻辑完全包含在表单中。与所有自定义表单一样,将验证逻辑放入各种*clean*方法中。

关于django - Django:是否可以在一个通用 View 中验证和保存多种形式的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com