NOT NULL约束失败:teams_team.user_id

时间:2018-01-31 15:53:59

标签: python django

当我作为经过身份验证的用户提交新团队时,我会收到此错误。我搜索了很多答案,但是他们说要做null=Truedefault=1,但我不想将它作为null或者我想成为用户的id。另外,我导入并尝试了 settings.AUTH_USER_MODEL get_user_model

from django.contrib.auth.models import User


#models.py
class Team(models.Model):
    creator = models.ForeignKey(User, related_name='teams', on_delete=models.CASCADE)
    name = models.CharField(max_length=20, unique=True)
    rank = models.IntegerField(default=0)

#views.py
class TeamsCreateView(generic.CreateView):
    model = Team
    form_class = TeamCreationForm

#forms.py
class TeamCreationForm(forms.ModelForm):
    class Meta:
        model = Team
        fields = ('name',)

1 个答案:

答案 0 :(得分:1)

覆盖form_valid方法,并在保存表单的实例之前设置user

from django.contrib.auth.mixins import LoginRequiredMixin

class TeamsCreateView(LoginRequiredMixin, generic.CreateView):
    model = Team
    form_class = TeamCreationForm

    def form_valid(self, form):
        form.user = self.request.user
        return super(TeamsCreateView, self).form_valid(form)

使用LoginRequiredMixin确保用户只有在登录后才能访问该视图。