python - 我想更新我创建的模型。但是,我想通过模型的 id 来做到这一点
问题描述
我想根据 id 号更新我的模型。我怎样才能做到这一点?我可以更新模型,但我想通过 id 来执行此操作,我遇到的另一个问题是我只希望创建者能够更新模型
模型.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")
序列化程序##
class AdvertiseMainSerializer(ModelSerializer):
class Meta:
model = Advertise
fields = '__all__'
视图.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)
视图.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)
推荐阅读
- database - 三元嵌套事实类型 ORM
- php - SQL 无法从表中删除
- mongodb - MongoDB中基于变量值的条件查询
- python - Python:将 Excel 导出为 PDF 需要时间(如何减少?)
- javascript - 我怎样才能简化这样的oneliner javascript代码
- vue.js - vue-test-utils 查找按钮不适用于查找选项对象
- python - 通过网页与 Python 脚本交互的简单方法是什么?
- chart.js - 给条形图添加标签:chartjs
- apache2 - 使用 Microsoft SSO 配置 IDP 失败并出现 apache2 Mellon 错误
- python - OpenCV上的帧宽度和高度没有改变