Обновление api для модели пользователя и модели профиля OnetoOne в Django Rest Framework
У меня есть одна модель под названием profile, которая связана с Django User Model через отношения один к одному. Я хочу создать конечную точку api, которая будет принимать все данные и обновлять обе таблицы, когда это необходимо.
Models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
manager = models.ForeignKey(
User, on_delete=models.SET_NULL, null=True, blank=True, related_name="manager"
)
middle_name = models.CharField(max_length=50, blank=True)
fpo = models.ForeignKey(Fpo, on_delete=models.CASCADE, null=True, blank=True)
image = models.ImageField(
upload_to="profile_images",
blank=True,
null=True,
default=None,
verbose_name="Profile Image",
)
type = models.IntegerField(
choices=UserTypeChoice.choices,
default=UserTypeChoice.FARMER,
verbose_name="User Type",
)
gender = models.PositiveSmallIntegerField(
choices=GenderChoice.choices, null=True, blank=True
)
date_of_birth = models.DateField(null=True, blank=True)
pincode = models.CharField(
max_length=6,
verbose_name="Pincode",
blank=True,
null=True,
)
gat_no = models.CharField(
max_length=20,
verbose_name="GAT No",
blank=True,
null=True,
)
landholding_in_acre = models.DecimalField(
max_digits=10,
decimal_places=2,
default=0,
)
is_member = models.BooleanField(default=False)
serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = (
"middle_name",
"manager",
"fpo",
"type",
"date_of_birth",
"gender",
"gat_no",
"landholding_in_acre",
"landholding_registred_in_acre",
"plotting_in_acre",
"is_member",
)
views.py
class FarmersDetailView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = FarmerDetailsSerializer
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (TokenAuthentication,)
def get_queryset(self):
if self.request.user.is_authenticated:
if self.request.user.profile.type == 3:
return User.objects.filter(profile__type=4, manager=self.request.user)
return User.objects.filter(profile__type=4)
return User.objects.none()
Не удается обновить с помощью одного api. Итак, я хочу обновлять модели профиля и пользователя одновременно через одну конечную точку. Когда я буду обновлять first_name, last_name, email и имя пользователя в таблице user и другие детали в таблице profile.