Связь пользовательской модели с моделью пользователя Django Помогите пожалуйста, я новичок в Django rest Api

Я новичок в Django Rest API для модели пользователя я использую Django модель пользователя по умолчанию. моя конечная цель - когда пользователь входит в систему, он сможет видеть данные, относящиеся только к нему

Я хочу, чтобы мое значение было таким

{ "user": 1
    {
      "id": 1,
      "rent_date": "23-08-2022",
      "rentmonth": "June",
      "rent_amount": 5000.0,
      "bijli_bill": 250.0,
      "other_amount": 150.0,
      "other_commnet": "test",
      "total_amount": 5400.0,
      "total_rent_amount": 17000.0,
    }
}

Но получается вот так, пользователь показывает под моделью аренды

{
  "status": "success",
  "data": [
    {
      "id": 1,
      "rent_date": "23-08-2022",
      "rentmonth": "June",
      "rent_amount": 5000.0,
      "bijli_bill": 250.0,
      "other_amount": 150.0,
      "other_commnet": "test",
      "total_amount": 5400.0,
      "total_rent_amount": 17000.0,
      "user": 1
    },
    {
      "id": 2,
      "rent_date": "23-08-2022",
      "rentmonth": "July",
      "rent_amount": 6000.0,
      "bijli_bill": 250.0,
      "other_amount": 150.0,
      "other_commnet": "test",
      "total_amount": 6400.0,
      "total_rent_amount": 17000.0,
      "user": 2
    },

Это мой Model.py from django.contrib.auth.models import User

class rent(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    rent_date = models.DateField(auto_now_add=True)
    rentmonth = models.CharField(max_length=30)
    rent_amount = models.FloatField()
    bijli_bill = models.FloatField()
    other_amount = models.FloatField(blank=True)
    other_commnet = models.CharField(blank=True, max_length=200)

    @property
    def total_amount(self):
        return self.rent_amount + self.bijli_bill + self.other_amount

это мой serializers.py

from rest_framework import serializers
from .models import rent
from django.contrib.auth.models import User
from django.db.models import Sum

class rentSerializer(serializers.ModelSerializer):
    rent_date = serializers.DateField(format="%d-%m-%Y", read_only=True)
    rentmonth = serializers.CharField()
    rent_amount = serializers.FloatField()
    bijli_bill = serializers.FloatField()
    other_amount = serializers.FloatField()
    other_commnet = serializers.CharField(max_length=200)
    total_amount = serializers.FloatField()
    total_rent_amount = serializers.SerializerMethodField()


    class Meta:
        model = rent
        fields = ('__all__')

    def get_total_rent_amount(self, obj):
        totalprice = rent.objects.all().aggregate(total_price=Sum('rent_amount'))
        return totalprice["total_price"]

    

# User Serializer
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email')

# Register Serializer
class RegisterSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(validated_data['username'], validated_data['email'], validated_data['password'])

        return user

Вот мой view.py class rentViews(APIView): def post(self, request): serializer = rentSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK) else: return Response({"status": "error", "data": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)

    def get(self, request, id=None):
        if id:
            item = rent.objects.get(id=id)
            serializer = rentSerializer(item)
            return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

        items = rent.objects.all()
        serializer = rentSerializer(items, many=True)
        return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

    def patch(self, request, id=None):
        item = rent.objects.get(id=id)
        serializer = rentSerializer(item, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response({"status": "success", "data": serializer.data})
        else:
            return Response({"status": "error", "data": serializer.errors})

    def delete(self, request, id=None):
        item = get_object_or_404(rent, id=id)
        item.delete()
        return Response({"status": "success", "data": "Item Deleted"})
###############################UserAPI#######################################

# Register API
class RegisterAPI(generics.GenericAPIView):
    serializer_class = RegisterSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
        "user": UserSerializer(user, context=self.get_serializer_context()).data,
        "token": AuthToken.objects.create(user)[1]
        })

# Login API
class LoginAPI(KnoxLoginView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request, format=None):
        serializer = AuthTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super(LoginAPI, self).post(request, format=None)
Вернуться на верх