“列'email_id'不能为空”这是我在尝试登录用户时填写表单时遇到的错误,只有登录用户才能访问以更新其日常工作。< br /> 这是模型:
class User(AbstractBaseUser):
sys_id = models.AutoField(primary_key=True, blank=True)
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
first_name = models.CharField(max_length=50,blank=True,null=True)
last_name = models.CharField(max_length=50,blank=True,null=True)
address = models.TextField(max_length=300,blank=True,null=True)
DOB = models.DateField('Date of Birth', blank=True, null=True)
DOJ = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)
staff = models.BooleanField(default=False)
admin = models.BooleanField(default=False)
class services(models.Model):
taskid = models.AutoField(primary_key=True, blank=True)
client = models.CharField(max_length=50,blank=True,null=True)
project = models.CharField(max_length=50,blank=True,null=True)
taskTime = models.DateTimeField('Task Time', blank=True, null=True)
hours = models.TimeField(blank=True, null=True)
minutes = models.TimeField(blank=True, null=True)
Description = models.TextField(max_length=300,blank=True,null=True)
email = models.OneToOneField(User, on_delete=models.CASCADE)
这是表格:
class ServiceForm(forms.ModelForm):
class Meta:
model = services
fields = ('client','project','taskTime','hours','minutes','Description')
这是视图:
@login_required
def service(request):
if request.method == 'POST':
user_form = ServiceForm(data=request.POST)
if user_form.is_valid():
user_form.email = request.user.email
user_form.save()
else:
print(user_form.errors)
else:
user_form = ServiceForm()
return render(request, 'service.html', {
'user_form':user_form})
我的主要问题是用户登录并尝试创建服务,或者他的工作详细信息用户ID应该自动分配给服务模型。请帮我解决这个问题。
我的问题是,当我创建任务时,它的用户名是电子邮件,当我创建任务时,它应该自动分配给它,因为提到的重复重复创建第一个表单时分配用户名很容易,但是我的问题是我正在创建另一个表单用户登录时填写表单,默认情况下应将该用户ID分配给该表单。
答案 0 :(得分:0)
您应使用所需信息预先填充表格。由于email
是与OneToOne
的{{1}}关系(那里的命名很混乱!),因此您应该使用User
对象,而不是电子邮件地址:
request.user