我正在尝试链接 Django 中特定用户帐户创建的帖子



型号.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Customer(models.Model):
user = models.OneToOneField(User,null=True,blank=True,on_delete=models.CASCADE)
name = models.CharField(max_length=200,null=True)
##    phone = models.IntegerField(null=True)
email = models.EmailField(max_length=250)
profile_pic = models.ImageField(default='default_pic.png',null=True,blank=True)
date_created = models.DateTimeField(auto_now_add=True,null=True)
def __str__(self):
return self.name

class Task(models.Model):
customer = models.ForeignKey(Customer,on_delete=models.CASCADE,null=True)
title = models.CharField(max_length=200)
description = models.TextField(null=True,blank=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
class Meta:
ordering = ['complete']

视图.py

@login_required(login_url='login')
def taskCreate(request):
if request.method == 'POST':
form = TaskForm(request.POST or None)
if form.is_valid():
form.instance.customer = request.user
form.save()
return redirect('tasks')
else:
form = TaskForm()
context = {'form':form}
return render(request,'todo_list/task_create.html',context)

错误:/create_task处的值错误/无法将"<SimpleLazyObject:<用户:Dominic>gt":"任务.客户";必须是";客户";例子

我正在尝试链接用户帐户中的用户名,以显示在模型Task.customer中,表示帖子是由该用户创建的。我可以问一下,为了在模型Task中指定customer,可以采取什么方法吗?此外,我不了解错误消息的详细信息,因为我的管理面板在Customer模型中已经有了当前用户名。然而,如果我使用request.user.customer,用户名不会显示,而是返回None,那么如何解决这个问题?

我不知道form.instance.customer = request.user但我想我理解你的意思,下面的代码也做了同样的事情

@login_required(login_url='login')
def taskCreate(request):
if request.method == 'POST':
form = TaskForm(request.POST or None)
if form.is_valid():
t = form.save(commit = False)
t.customer = request.user  # assigning current user to created task.customer
t.save()
return redirect('tasks')
else:
form = TaskForm()
context = {'form':form}
return render(request,'todo_list/task_create.html',context)

如果代码仍然不起作用,请尝试更改线路

customer = models.ForeignKey(Customer,on_delete=models.CASCADE,null=True)

型号中的customer = models.ForeignKey(User,on_delete=models.CASCADE,null=True).py

错误来自以下代码段form.instance.customer=请求用户

request.user不是Customer实例,您可以尝试从request.user中提取信息,并从中创建一个Customer对象,然后将其分配回

最新更新