Python 具有最终用户模型的任务模型
我试图用当前用户(EndUser)创建一个任务,它的标题和创建日期,但是我只能用Python 具有最终用户模型的任务模型,python,django,Python,Django,我试图用当前用户(EndUser)创建一个任务,它的标题和创建日期,但是我只能用字段=['title']规范创建任务。我想让用户字段自动填入最终用户(当前用户)和创建日期 models.py class EndUser(models.Model): user = models.OneToOneField(User, null=True, blank = True, on_delete=models.CASCADE) name = models.CharField(max_leng
字段=['title']
规范创建任务。我想让用户字段自动填入最终用户
(当前用户)和创建日期
models.py
class EndUser(models.Model):
user = models.OneToOneField(User, null=True, blank = True, on_delete=models.CASCADE)
name = models.CharField(max_length = 200, null=True)
email = models.CharField(max_length = 200, null=True)
date_created = models.DateField(auto_now_add = True)
def __str__(self):
return self.name
class Tag(models.Model):
CATEGORY = (('My Day', 'My Day'),
('Important', 'Important'),
('Planned', 'Planned'),)
name = models.CharField(max_length=200, null=True, choices=CATEGORY)
def __str__(self):
return self.name
class Task(models.Model):
user = models.ForeignKey(EndUser, null= True, on_delete = models.SET_NULL)
title = models.CharField(max_length = 200)
date_created= DateField(auto_now = True)
tags = models.ManyToManyField(Tag, blank = True)
def __str__(self):
return self.title
views.py
@authenticated_user
def mainPage(request):
tasks = Task.objects.all()
form = TaskForm()
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
context = {'tasks': tasks[::-1], 'form':form}
return render(request, 'tasks/todoList.html', context)
forms.py
class TaskForm(ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Add a task' , 'size': '5'}))
class Meta:
model = Task
fields = ['title']
#fields = "__all__"
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username','email','password1','password2']
尝试了下面的代码,但出现错误ValueError:cannotassign”“:“Task.user”必须是“EndUser”实例。
:
...
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
task = form.save(commit=False)
task.user = request.user # gives error
task.save()
return redirect('/')
...
您的
请求.user
很可能是用户
对象,而不是最终用户
对象。您可以通过request.user.EndUser
获得相应的EndUser
对象,当然,如果登录用户具有相关的EndUser
:
@authenticated_user
def mainPage(request):
tasks = Task.objects.all()
form = TaskForm()
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.instance.user = request.user.enduser
form.save()
return redirect('/')
context = {'tasks': tasks[::-1], 'form':form}
return render(request, 'tasks/todoList.html', context)
@authenticated\u用户
def主页(请求):
tasks=Task.objects.all()
表单=任务表单()
如果request.method==“POST”:
表单=任务表单(request.POST)
如果form.is_有效():
form.instance.user=request.user.enduser
form.save()
返回重定向(“/”)
上下文={'tasks':tasks[:-1],'form':form}
返回呈现(请求'tasks/todoList.html',上下文)
注意:通常最好使用来引用用户模型,而不是直接使用。有关更多信息,请参见