Python 无法分配“…”'&引用;:&引用&引用;必须是一个";“用户”;实例

Python 无法分配“…”'&引用;:&引用&引用;必须是一个";“用户”;实例,python,sql,django,django-custom-user,user-mode-linux,Python,Sql,Django,Django Custom User,User Mode Linux,models.py寻求帮助 class AssistanceQuest (models.Model): Customer = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=False) Status = models.BooleanField(default=False,null=False,blank=False) Date_re

models.py寻求帮助

class AssistanceQuest (models.Model):     

    Customer = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=False)
    Status = models.BooleanField(default=False,null=False,blank=False)    
    Date_request = models.DateTimeField(auto_now_add=False)
    Tipology = models.CharField(max_length=50, null= False)
    Request = models.TextField(max_length= 1000, blank=False, null=False)
适用于自定义用户的models.py

from django.contrib.auth.models import AbstractUser
from .managers import CustomUserManager

class User (AbstractUser):
   is_superuser = None
   is_staff = None
   groups = None
   user_permissions = None
   objects = CustomUserManager()
 from django.contrib.auth.base_user import BaseUserManager
 from django.utils.translation import ugettext_lazy as _


class CustomUserManager(BaseUserManager):
"""
Custom user model manager senza staff o permessi
"""
def create_user(self, username,email,first_name,last_name,password):
  
    if not email:
        raise ValueError(_('The Email must be set'))
    email = self.normalize_email(email)        
    user = self.model(username = username, email = email, first_name = first_name, last_name = last_name)
    user.set_password(password)
    user.save()
    return user
用于自定义用户的manager.py

from django.contrib.auth.models import AbstractUser
from .managers import CustomUserManager

class User (AbstractUser):
   is_superuser = None
   is_staff = None
   groups = None
   user_permissions = None
   objects = CustomUserManager()
 from django.contrib.auth.base_user import BaseUserManager
 from django.utils.translation import ugettext_lazy as _


class CustomUserManager(BaseUserManager):
"""
Custom user model manager senza staff o permessi
"""
def create_user(self, username,email,first_name,last_name,password):
  
    if not email:
        raise ValueError(_('The Email must be set'))
    email = self.normalize_email(email)        
    user = self.model(username = username, email = email, first_name = first_name, last_name = last_name)
    user.set_password(password)
    user.save()
    return user
这是助教的view.py

    if User.is_authenticated:
                
        Message = "Assistance Request From " + str(User.get_full_name(User)) + ": "+ str(User.email)
        
      
    else:
        Message = "Assistance Request From " + request.POST['message-name-surname']+"\n Email: "+ request.POST['message-email']
    
    Message += "\n City: "+ request.POST['message-city']+"\n Province: "+ request.POST['message-province']+"\n Landline Or Mobile Phone: "+ request.POST['message-phone']+"\n Number Order Or Purchase Period: "+ request.POST['message-number-order']+"\n Product Under Warranty: "+ request.POST['message-warranty']+"\n Request: "+ request.POST['message']+"\n Prefers To Be Contacted: "+ request.POST['message-pref-contact']
    
    if User.is_authenticated:
        user= settings.AUTH_USER_MODEL
        Assistance = AssistanceQuest(Customer=user, Status= 'False',Request= Message, Tipology='Tecnica',Date_request=datetime.datetime.now())
        Assistance.save()
        Subject = "Assistance Request From " + str(User.get_username(User))
        send_mail(
            Subject,
            Message,
            'artemis.pcstore@gmail.com', 
        ['artemis.pcstore@gmail.com'],
        )
    else:
        send_mail(
            "Richiesta non registrata di assistenza",
            Message,
            'artemis.pcstore@gmail.com', 
        ['artemis.pcstore@gmail.com'],
        )
当我尝试插入请求时,唯一的错误是: 值错误位于/协助/ 无法分配“'User.User'”:“AssistanceQuest.Customer”必须是“User”实例


有人能帮我吗?

客户字段应该是用户实例,但是在创建助理请求时,您正在将模型实例传递给客户字段

所以改变这个

Assistance = AssistanceQuest(Customer=user, Status= 'False',Request= Message, Tipology='Tecnica',Date_request=datetime.datetime.now())

Assistance=AssistanceQuest(Customer=request.user,Status='False',request=Message,Tipology='technica',Date\u request=datetime.datetime.now())

假设通过身份验证的用户是客户

设置的值是多少。通过身份验证的用户模型?是用户。用户原因是自定义模型谢谢你,伙计,你救了我一天,你知道我如何显示通过身份验证的用户的全名和电子邮件吗?由于邮件将其保存为用于获取电子邮件,您可以使用
request.user.email
,同样,您可以将名字和姓氏组合起来获得全名。谢谢大家如果此答案对您有效,请将此答案标记为已接受。