我有一个从模型生成的Django表单
model.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
telephone = models.CharField(max_length=15, blank=True)
email_address = models.CharField(max_length=30, blank=True)
date_of_birth = models.DateField(null=True, blank=True)
从用户(自动)填充用户Dropbox
选择用户时,如何从个人资料模型中预先填充表单?
答案 0 :(得分:0)
您可以通过在更改用户字段时提交表单来执行此操作,也可以使用Ajax异步执行此操作。两者都需要一点JavaScript代码。第一个选项要求您使用模型形式。这些步骤非常标准。
对于Ajax,请搜索有关Ajax的教程,然后在SO上查看this answer。
在您的HTML中:
<select name="user_selector" id="userDropDown" class=" whatever-custom-css-class" autofocus onChange="this.form.submit();">
然后,在您的菜单中,您可以
user_name = self.request.GET.get('user_selector', None)
if user_name:
try:
selected_user = User.objects.get(username = user_name)
except ObjectDoesNotExist:
# No such user.
selected_user = None
if selected_user:
contact_form = ContactForm(instance = selected_user)
...
context.update({'form': contact_form})
return render(request, self.template_name, context)