【问题标题】:How to populate django form with selection from your models如何使用模型中的选择填充 django 表单
【发布时间】:2019-11-21 08:24:28
【问题描述】:

我在 Django 中有一个 CreateSong CBV,它允许我为模型创建歌曲对象。我的问题是,在我为视图创建的表单中,如何使相册列自动填充用户创建的相册?以这种方式调用“self”时出现错误。

在下面查看我的观点

  class CreateSong(CreateView):
    model = Song
    fields = [album, song_title]
    fields['album'].queryset = Album.objects.filter(owner=self.request.user)

【问题讨论】:

  • 我有 cmets,但没有任何帮助。我只想查看与该用户相关的唯一专辑。
  • 我现在对代码做了一些更正。

标签: django


【解决方案1】:

我认为你应该覆盖get_form。请看下面的例子:

class CreateSong(CreateView):
    model = Song
    fields = [album, song_title]

    def get_form(self):
        form = super().get_form()
        form.fields['album'].queryset = Album.objects.filter(owner=self.request.user)
        return form

【讨论】:

  • 谢谢。在我问这个问题时,我没有足够的声誉来发表评论或实际投票。现在我有,再次感谢。
【解决方案2】:

您无权访问self.request.user,因为您是在类级别调用它,因此是在定义类时而不是在实际调用视图时。相反,您应该覆盖 get_form 方法,如 Davit 的回答。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 2020-03-25
    • 1970-01-01
    • 2021-03-28
    • 2015-09-02
    • 2010-10-30
    • 2014-02-14
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多