Django在Createview中自动填充用户

时间:2016-06-03 06:22:30

标签: django

我想知道创建模型的最佳方法,并让request.user自动填充字段。

model.py

class Match(models.Model):
    match_name = models.CharField(max_length=100)
    player = models.CharField(max_length=100, choices=match_game, default=2)
    time_start = models.DateTimeField(blank=True, default=None, null=True)
    match_join = models.ForeignKey(User, default=None, blank=True, null=True)
    match_finished = models.BooleanField(default=False)

    def get_absolute_url(self):
        return reverse('match:details', kwargs={'pk': self.pk})

    def __str__(self):
        return self.match_name

views.py

class MatchCreate(CreateView):
    model = Match
    fields = ['match_name', 'player']

我们的想法是,当您创建匹配时,您作为用户自动加入该匹配。

1 个答案:

答案 0 :(得分:0)

我的python可能生锈了,自从我使用Django以来已经有一年多了。

正如Daniel Roseman在下面的评论中所提到的,request对象已作为视图类的成员提供。

您只需从request抓取用户,然后在保存之前将其提供给创建的instance。这可以在form_valid()中完成:

def form_valid(form):
    form.instance.match_join = self.request.user
    super(MatchCreate, self).form_valid(form)