Неподдерживаемый тип(ы) операнда(ов) для @: 'Q' и 'Q' в Django RestFramework
Я пытаюсь сделать login api с использованием django rest framework и при выполнении сериализации login api столкнулся с ошибкой "unsupported operand type(s) for @: 'Q' и 'Q'" внутри функции validate. Я не могу понять почему возникает эта ошибка и помогите мне решить эту проблему
Это мой файл model.py
class User(models.Model):
first_name=models.CharField(max_length=100, null=True)
last_name=models.CharField(max_length=100, null=True)
username = models.CharField(max_length=100, null=False,unique =True)
email = models.EmailField(max_length=100, null=False, unique =True)
# work_email = models.EmailField(max_length=100,unique =True)
password = models.CharField(max_length=50, null=False)
phone= models.CharField(max_length=100, null=True,unique =True)
phone2=models.CharField(max_length=100, null=True,unique =True)
is_login = models.BooleanField(null=True, default=False)
is_verified=models.BooleanField(null=True)
is_active=models.BooleanField(null=True)
token = models.CharField(max_length=100, null=True, default="")
user_type_id=models.ForeignKey(UserType, on_delete=models.CASCADE,null=True)
created_at=models.DateField(null=True)
updated_at=models.DateField(null=True)
def __str__(self):
return "{} -{}".format(self.username, self.email)
и вот файл serializers.py
from django.db.models import Q, fields
from django.db.models.base import Model # for queries
class UserLoginSerializer(serializers.ModelSerializer):
username=serializers.CharField()
password=serializers.CharField()
token=serializers.CharField(required=False, read_only=True)
def validate(self,data):
# user,email,password validator
username=data.get("username",None)
password=data.get("password",None)
if not username and password:
raise ValidationError('Detail not enter')
user=None
# if email is passed in username
if '@' in username:
user= User.objects.filter(Q(email=username) & Q(password=password)).distinct()
if not user.exists():
raise ValidationError("User credintials are not correct.")
user= User.objects.get(email=username)
else:
user=User.objects.filter(Q(username=username)@ Q(password=password)).distinct()
if not user.exists():
raise ValidationError("User credentials are not correct.")
user = User.objects.get(username=username)
if user.is_login:
raise ValidationError("User already logged in.")
user.is_login = True
data['token'] = uuid4()
user.token = data['token']
user.save()
return data
class Meta:
model = User
fields = (
'username',
'password',
'token',
)
read_only_fields = (
'token',
)