我创建了我的扩展我的 model.py 有四个不同的
class User(AbstractUser):
is_phamacy = models.BooleanField(default=False)
is_restaurant = models.BooleanField(default=False)
is_grocery_shop = models.BooleanField(default=False)
is_rider = models.BooleanField(default=False)
class Restaurant(models.Model):
restaurant_user = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
restaurant_name = models.CharField(max_length=255,blank=True)
full_name_of_merchant = models.CharField(max_length=255,blank=True)
government_id = models.ImageField(upload_to = 'media/government_id' , null = True, blank=True)
images_of_restaurants = models.ImageField(upload_to = 'media/images_of_restaurants' , null = True, blank=True)
position_in_restaurant = models.CharField(max_length=255,blank=True)
is_your_business_registered = models.BooleanField(default=True)
tin_number = models.CharField(max_length=255,blank=True)
longitude = models.FloatField(default=0000)
latitude = models.FloatField(default=0000)
long_you_have_been_working = models.IntegerField()
want_delivery_guy = models.BooleanField(default=True)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
和其他人跟随,但他们采取了不同的细节,但没有完成,但serializer.py是
class RestaurantRegistrationSerializer(RegisterSerializer):
restaurant_user = serializers.PrimaryKeyRelatedField(read_only=True,) #by default allow_null = False
restaurant_name = serializers.CharField(required=True)
full_name_of_merchant = serializers.CharField(required=True)
government_id = serializers.ImageField(required=True, use_url=True)
images_of_restaurants = serializers.ImageField(required=True, use_url=True)
position_in_restaurant = serializers.CharField(required=True)
is_your_business_registered = serializers.BooleanField(required=True)
tin_number = serializers.CharField(required=True)
longitude = serializers.FloatField(required=True)
latitude = serializers.FloatField(required=True)
long_you_have_been_working = serializers.IntegerField(required=True)
want_delivery_guy = serializers.BooleanField(required=True)
def get_cleaned_data(self):
data = super(RestaurantRegistrationSerializer, self).get_cleaned_data()
extra_data = {
'restaurant_name' : self.validated_data.get('restaurant_name', ''),
'full_name_of_merchant' : self.validated_data.get('full_name_of_merchant', ''),
'government_id': self.validated_data.get('government_id', ''),
'images_of_restaurants': self.validated_data.get('images_of_restaurants', ''),
'position_in_restaurant': self.validated_data.get('position_in_restaurant', ''),
'is_your_business_registered': self.validated_data.get('is_your_business_registered', ''),
'tin_number': self.validated_data.get('tin_number', ''),
'longitude': self.validated_data.get('longitude', ''),
'latitude': self.validated_data.get('latitude', ''),
'long_you_have_been_working': self.validated_data.get('long_you_have_been_working', ''),
'want_delivery_guy': self.validated_data.get('want_delivery_guy', ''),
}
data.update(extra_data)
return data
def save(self, request):
user = super(RestaurantRegistrationSerializer, self).save(request)
user.is_restaurant = True
user.save()
seller = Restaurant(
restaurant_user=user,
restaurant_name=self.cleaned_data.get('restaurant_name'),
full_name_of_merchant=self.cleaned_data.get('full_name_of_merchant'),
government_id=self.cleaned_data.get('government_id'),
images_of_restaurants=self.cleaned_data.get('images_of_restaurants'),
position_in_restaurant=self.cleaned_data.getlist('position_in_restaurant'),
is_your_business_registered=self.cleaned_data.get('is_your_business_registered'),
tin_number=self.cleaned_data.get('tin_number'),
longitude=self.cleaned_data.get('longitude'),
latitude=self.cleaned_data.get('latitude'),
want_delivery_guy=self.cleaned_data.get('want_delivery_guy'),
long_you_have_been_working=self.cleaned_data.get('long_you_have_been_working')
)
seller.save()
return user
它完美地保存到数据库中,但我在views.py中编写的登录代码有问题
class loginViewSet(viewsets.ViewSet,LoginRequiredMixin):
"""Checks username and password and returns an auth token"""
serializer_class = AuthTokenSerializer
def create(self, request):
"""Use the obtainAuthtoken apiciew to calidate and create token"""
return ObtainAuthToken().post(Response)
我写了这段代码来登录,但它不起作用请有人帮忙登录部分