如何在一个Update View中提交两个表单



我正在搜索如何在一个视图中提交两个具有两个不同提交按钮的表单

class EditAvatarForm(forms.ModelForm):
class Meta:
model = Person
fields = ('avatar',)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.user_created = None
avatar = forms.ImageField(required=True, )
self.fields = OrderedDict(
[
("avatar", avatar),
]
)
def clean_avatar(self):
image = self.files.get('avatar')
if image:
try:
creator = None
if self.instance:
creator = self.instance
# ?That simple? Yes!:
return ImageFile.objects.create(
image_file=image, creator=creator
)
except IOError:
self.add_error('avatar', _("Unknown image type"))
return None
def clean(self):
return super().clean()

class EditProfileForm(forms.ModelForm):
class Meta:
model = User
fields = ("username", "first_name", "last_name", "email",)

这是forms.py,我希望能够在单个视图中更改头像和用户信息。Person是用户与user = models.OneToOneField( User, blank=True, null=True, on_delete=models.CASCADE )的关联模型与imageFile相关的avatar = models.ForeignKey( ImageFile, default=None, blank=True, null=True, related_name="persons", on_delete=models.SET_NULL, )

@Aymen_B-使用Ajax怎么样?创建请求时,在ajax主体的请求有效负载中添加form_name。在UpdateView中,你可以这样做比如我有一个名为testform的form1和名为testform2的form2

if request.method == "POST" and request.is_ajax():
if 'testform' in request.POST.get('form_name'):
#your update logic for this form
elif 'testform2' in request.POST.get('form_name'):
#your update logic for this form

最新更新