当我作为经过身份验证的用户提交新团队时,我会收到此错误。我搜索了很多答案,但是他们说要做null=True
或default=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',)
答案 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
确保用户只有在登录后才能访问该视图。