如何将当前活动用户作为外键添加到 djangorestframework 中的 create post 模型?

how to add current active user as foreign key to the create post model in djangorestframework?

如何将当前活动用户作为外键添加到 djangorestframework 中的创建 post 模型?

型号:

class DoctorProfile(AbstractBaseUser, PermissionsMixin):
    id=models.AutoField(primary_key=True)
    name = models.CharField(_('name'), max_length=50, blank=True)
    mobile = models.CharField(_('mobile'), unique=True, max_length=10, blank=False)
    email = models.EmailField(_('email address'), blank=True)
    password = models.CharField(_('password'),max_length=25,blank=False)
    otp = models.IntegerField(null=True, blank=True)
      
class Doctor_clinic(models.Model):
    clinic_id = models.AutoField(primary_key=True)
    doc_profile = models.ForeignKey(DoctorProfile,on_delete=models.CASCADE)
    clinic_name = models.CharField(max_length=150)
    clinic_address = models.CharField(max_length=150)
    City = models.CharField(max_length=50)
    state = models.CharField(max_length=50)
    pincode = models.IntegerField()
    

#如何在序列化程序中获取外键

我是这样写的,这是correct/relevent吗?

   class UserSerializer(serializers.ModelSerializer):
        # mobile = serializers.RegexField("[0-9]{10}",min_length=10,max_length=10)
        password = serializers.CharField(write_only=True)
        email=serializers.EmailField(max_length=155,min_length=3,required=True)
        name=serializers.CharField(max_length=55,min_length=3,required=True)

        class Meta:
            model = DoctorProfile
            fields = ("name", "email", "password", "mobile","otp")

class ClinicSerializer(serializers.ModelSerializer):
    class Meta:
        model = Doctor_clinic
        fields =('clinic_name','clinic_address', 'City', 'state', 'pincode','doc_profile')

观看次数:

class ClinicRegistrationView(generics.ListCreateAPIView):
    serializer_class = ClinicSerializer
    queryset = Doctor_clinic.objects.all()
    permission_classes = (IsAuthenticated,)

当序列化关系时,你需要根据你想要的表示定义一个单独的字段,例如像这样编写你的序列化程序:

class ClinicSerializer(serializers.ModelSerializer):
    doc_profile = serializers.StringRelatedField()

    class Meta:
        model = Doctor_clinic
        fields =('clinic_name','clinic_address', 'City', 'state', 'pincode','doc_profile')

permissions.py

使用权限classes

class IsOwner(permissions.BasePermission):

 def has_object_permission(self, request, view, obj):
     return obj.doc_profile == request.user

views.py

    def perform_create(self, serializer):
        return serializer.save(doc_profile=self.request.user)