我想知道创建模型的最佳方法,并让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']
我们的想法是,当您创建匹配时,您作为用户自动加入该匹配。
答案 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)