【问题标题】:How to pre fill fields in a form when using django-bootstrap-modal-forms使用 django-bootstrap-modal-forms 时如何在表单中预填充字段
【发布时间】:2020-02-09 14:33:42
【问题描述】:

我正在使用 django-bootstrap-modal-forms,当使用我的模型中的字段时,它可以完美地在文档中工作。一些字段是 ForeignKeys,它们正确显示供用户从键引用的数据库表中选择一个值,但我需要输入当前用户的用户名。

我尝试更改 CreateView 类处理字段的方式,但没有成功。可能做错了什么。

models.py

class userSchoolYear(models.Model):
    user_in_school = models.ForeignKey(get_user_model(), null=True, on_delete=models.CASCADE)
    school = models.ForeignKey(sifMusicSchool, on_delete=models.CASCADE)
    school_year = models.ForeignKey(sifSchoolYear, on_delete=models.CASCADE)
    school_year_grade = models.CharField(max_length=4, choices=IZBOR_RAZREDA, default=None, null=True)
    user_instrument = models.ForeignKey(instType, on_delete=models.CASCADE, default=None, null=True)
    user_profesor = models.ForeignKey(profSchool, on_delete=models.CASCADE, default=None, null=True)

views.py

class SchoolYearCreateView(BSModalCreateView):
    template_name = 'school_year.html'
    form_class = SchoolYearForm
    success_message = 'Success!'
    success_url = reverse_lazy('school')

    def __init__(self, *args, **kwargs):
        self.form_class.user_in_school = 'johnny'  ### HERE
        print(user.username)
        super().__init__(*args, **kwargs)

forms.py

class SchoolYearForm(BSModalForm):

    class Meta:
            model = userSchoolYear
            fields = '__all__'

【问题讨论】:

    标签: python django


    【解决方案1】:

    感谢作者 Uroš Trstenjak,我能够找到解决方案。我试图从views.py设置字段值是错误的,而是应该在forms.py中完成。所以,基本上我必须为表单编写一个 init 并更改字段值。 Uroš 指出,在从级别我可以从 self.request.user 获取当前用户并且它确实有效。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2012-08-11
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多