小编fab*_*hel的帖子

在Django rest框架中创建之前检查对象权限

使用 ModelViewSet 和 DjangoObjectPermissions。

Django REST 框架似乎不会为“创建”请求 (POST) 调用 check_object_permission。我需要检查用户是否可以在将其保存到数据库之前创建此对象(因为权限检查取决于对象值)

我想我需要覆盖 ModelViewSet 的“创建”方法,但我不知道如何从序列化程序获取实例而不将其保存到数据库。

  1. 如何从序列化程序获取对象实例而不保存到数据库?
  2. 或者如何让 DRF 检查 POST/create 请求的对象权限?

谢谢

编辑:

深入研究 DRF 代码后,我无需保存即可获取实例:

def create(self, request, *args, **kwargs):
    serializer = WorkedHourSerializer(data=request.data)
    if serializer.is_valid():
        instance = MyModel(**serializer.validated_data)
Run Code Online (Sandbox Code Playgroud)

但是 Django 拒绝检查 perm 没有主键的对象,所以我必须强制一个:

        instance.id = 0
        self.check_object_permissions(request, instance)
Run Code Online (Sandbox Code Playgroud)

python django-rest-framework

8
推荐指数
1
解决办法
4463
查看次数

Wayland 上的 Android 模拟器:模拟器终止并退出代码 134

尝试从 android studio 运行 android 模拟器时出现以下错误。我在 Manjaro (Arch linux) 上使用 Wayland 图形管理器。

WARN - manager.EmulatorProcessHandler - Emulator terminated with exit code 134
Run Code Online (Sandbox Code Playgroud)

我尝试过许多设备,包括没有 Playstore 的 Nexus 4,这样我就可以将 RAM 调整为 2GiB,并将图形性能调整为“软件”。但没有任何办法,我总是面临这个问题。

android android-emulator wayland

8
推荐指数
1
解决办法
3604
查看次数

让 Django 在“迁移”上自动创建数据库

在开发环境中,有一种方法可以让 django 在“迁移”命令上自动创建数据库(在 postgreSQL 服务器上),就像创建测试数据库时一样?

我的最终目标是为每个 git 分支建立一个数据库。

django

5
推荐指数
1
解决办法
2584
查看次数

如何在 Django ORM 中预取或子查询带有条件的深层嵌套对象

有这些模型和关系:

Hours --FK--> Task --FK--> Project <--FK-- Period

class Hour(models.Model):
  date = models.DateField(...)
  task = models.ForeignKey(Task, ...)

class Task(models.Model):
  project = models.ForeignKey(Project, ...)
  
class Project(models.Model):
  pass

class Period(models.Model):
  project = models.ForeignKey(Project,...)
  start = models.DateField(...)
  end = models.DateField(...)


Summary :
 Hour has one task
 Task has one project
 Period has one project
 Hour has a date
 Period has a start date and a end date
Run Code Online (Sandbox Code Playgroud)

对于给定日期和给定项目,可能有一个时期或没有时期

我想以相同的方式填充对象period中的字段(使用查询集)Hourprefetch_related

我想要这样的东西:

hours = Hour.objects.prefetch_period().all()
hours.first().period # Period(...)
Run Code Online (Sandbox Code Playgroud)

使用像这样的自定义查询集方法:

class HourQuerySet(models.query.QuerySet): …
Run Code Online (Sandbox Code Playgroud)

python django django-orm

5
推荐指数
1
解决办法
4068
查看次数

Django:在mixin中覆盖save方法是否有意义?

我问自己在mixin中覆盖save方法是否有意义.

在我的项目中,我有充分的理由在几个模型中覆盖save方法.首先,我必须创建一个继承自的模型类models.Model.无论从语义上讲,我正在做的是给一个类一个角色(而不是自己定义一个对象),这就是为什么我认为写一个mixin更好.另一个原因是因为我们可能在不久的将来使用多重继承.另一方面,这一行在重写保存方法中:

super(MyMixin, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

不会产生敏感,因为它只能与django.db.models.Model类一起使用.

class MyMixin(object):

    def save(self, *args, **kwargs):
        ...
        super(MyMixin, self).save(*args, **kwargs)
        ...
Run Code Online (Sandbox Code Playgroud)

你能帮我决定最好的选择吗?(Mixin或定制型号)

django model mixins

3
推荐指数
1
解决办法
1999
查看次数