Python 如何在DRF中检查给定电子邮件或电话号码的数据库中是否存在用户
我需要根据用户的输入检查数据库中是否存在用户:他们的电子邮件或电话号码。如果用户存在,则该用户用于接受他们的订单。如果用户同时输入他们的电子邮件和电话,但它们在数据库中不存在,我需要创建用户。我该怎么做 这是序列化程序:Python 如何在DRF中检查给定电子邮件或电话号码的数据库中是否存在用户,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,我需要根据用户的输入检查数据库中是否存在用户:他们的电子邮件或电话号码。如果用户存在,则该用户用于接受他们的订单。如果用户同时输入他们的电子邮件和电话,但它们在数据库中不存在,我需要创建用户。我该怎么做 这是序列化程序: class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__' extra_kwargs = {
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
extra_kwargs = {
'email': {'required': True},
'phone': {'required': True}
}
def create(self, validated_data):
user= User.objects.create(
email=validated_data['email'],
phone=validated_data['phone']
)
user.save()
return user
class OrderSerializer(serializers.ModelSerializer):
food= FoodSerializer(many=True)
class Meta:
model = Order
fields = ('date','food','phone','email')
def validate(self, data):
email = data.get('email')
phone= data.get('phone')
if not email and not phone:
raise serializers.ValidationError("Email or phone required")
return data
def checkuser(self, cliente, data):
if data['email'] or data['phone'] in user:
return user
elif data['email'] or data['phone'] not in user:
pass
def create(self, validated_data):
order = Order.objects.create(
email=validated_data['email'],
phone=validated_data['phone'],
date= validated_data['date'],
food= validated_data['food'],
quantity= validated_data['quantity'],
)
order.save()
return order
助手就是你想要的
def create(self, validated_data):
filters = {}
if email := validated_data.get('email'):
filters["email"] = email
if phone := validated_data.get('phone'):
filters["phone"] = phone
user, _ = User.objects.get_or_create(**filters)
return user
这看起来不错,但我得到了一个错误:AttributeError:“User”对象没有“food”属性,如何修复?