如何解决我想更新我创建的模型但是,我想通过模型的ID来做到这一点
我想根据ID号更新我的模型。我怎样才能做到这一点? 我可以更新模型,但是我想通过id完成 我遇到的另一个问题是我只希望创建者能够更新模型
Model.py
class Advertise(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
title = models.CharField(max_length=100,verbose_name="ilan başlığı")
description = models.TextField(max_length=500,verbose_name="ilan açıklaması")
price = models.PositiveIntegerField(default=0,verbose_name="Fiyat")
square_meter = models.PositiveIntegerField(default=0,verbose_name="Metrekaresi")
number_of_rooms = models.PositiveIntegerField(choices=NumberOfRoomsChoices.CHOICES,verbose_name="Oda sayısı")
building_age = models.PositiveIntegerField(choices=NumberOfBuildingAgeChoices.CHOICES,verbose_name="Bina Yaşı")
floor = models.PositiveIntegerField(choices=NumberOfFloorChoices.FLOOR_CHOICES,verbose_name="Bulunduğu Kat")
serializer ##
class AdvertiseMainSerializer(ModelSerializer):
class Meta:
model = Advertise
fields = '__all__'
view.py ##
class UpdateAdvertiseData(UpdateAPIView):
serializer_class = AdvertiseMainSerializer
queryset = Advertise.objects.all()
def perform_create(self,serializer):
serializer.save(owner=self.request.user)
urls.py ##
url(r'^UpdateAdvertiseData/(?P<pk>[-\w]+)/$',UpdateAdvertiseData.as_view()),
解决方法
我自己又解决了这个问题。
当我在视图模型中添加以下功能时,我们只能更新属于已登录用户的模型。
def get_queryset(self):
return self.queryset.model.objects.filter(owner=self.request.user)
,然后选择使用以下功能自动登录的用户。##
def perform_create(self,serializer):
serializer.save(owner=self.request.user)
view.py ##
class UpdateAdvertiseData(RetrieveUpdateAPIView):
serializer_class = AdvertiseMainSerializer
queryset = Advertise.objects.all()
def get_queryset(self):
return self.queryset.model.objects.filter(owner=self.request.user)
def perform_create(self,serializer):
serializer.save(owner=self.request.user)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。