如何从模型中预填充Django表单
我有一个Django表单,它是从一个模型生成的 model.py如何从模型中预填充Django表单,django,django-forms,Django,Django Forms,我有一个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)
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)
用户下拉框由用户(自动)填充
当我选择用户时,如何从概要文件模型中预填充表单?您可以在用户字段发生更改时提交表单,也可以使用Ajax异步执行此操作。两者都需要一点JavaScript代码。第一个选项要求使用modelform。这些步骤相当标准
<select name="user_selector" id="userDropDown" class=" whatever-custom-css-class" autofocus onChange="this.form.submit();">
你能详细说明你想做什么吗?您可以选择一个用户,并根据某个用户或其他模型填充其他字段。我可以想到的另一种情况是,您正在尝试更新配置文件,但字段没有填充。@schillingt Question updated。这更清楚了吗?那么你在更新现有的个人资料?唯一的方法是在用户每次更改下拉列表的值时发出ajax请求,以获取相应用户的配置文件,如果存在,则更新javascript中的字段。查找ajax+django。
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)