小编Cod*_*ise的帖子

Django Rest Framework - 使用 model.ModelViewSet 更新模型

如何使用 Django Rest Framework 更新模型?我有以下模型/序列化器/视图定义:

foo/models.py

class FooBar (models.Model):

    title = models.CharField(max_length=255,null=False)

    def __unicode__(self):
        return self.title
Run Code Online (Sandbox Code Playgroud)

foo/serializers.py

from rest_framework import serializers
from foo.models import FooBar

class FooBarSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()

    class Meta:
        model = FooBar

        fields = ('id','title')
        read_only_fields = ['id']
Run Code Online (Sandbox Code Playgroud)

foo/views.py

from rest_framework import viewsets

from foo.models import FooBar
from foo.serializers import FooBarSerializer

class FooViewSet(viewsets.ModelViewSet):
    queryset = FooBar.objects.order_by('id')
    serializer_class = FooBarSerializer
Run Code Online (Sandbox Code Playgroud)

我在这个项目中使用了 angular,我可以说:

data = {'title':'New Foo Item'} $http.post(`/api/v1/foo/`, data );

如何更新记录?以下代码导致创建新记录。

data = {'title':'New Foo Item', 'id':1} $http.post(`/api/v1/foo/`, …

python django django-models django-views django-rest-framework

7
推荐指数
1
解决办法
1万
查看次数

修改序列化值 - Django Rest Framework

我有一个包含敏感数据的模型,比如社会保险号,我想将序列化数据转换为仅显示最后四位数字。

我存储了完整的社会安全号码:123-45-6789。我希望我的序列化程序输出包含:***-**-6789

我的型号:

class Employee (models.Model):

    name  = models.CharField(max_length=64,null=True,blank=True)
    ssn   = models.CharField(max_length=16,null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)

我的序列化器:

class EmployeeSerializer(serializers.ModelSerializer):

    id = serializers.ReadOnlyField()

    class Meta:
        model = Employee

        fields = ('id','ssn')

        read_only_fields = ['id']
Run Code Online (Sandbox Code Playgroud)

python django django-models django-rest-framework

7
推荐指数
2
解决办法
3982
查看次数

防止FFMPEG跳过过期的帧

我正在使用ffmpeg使用.m3u8网址保存实时流。我经常看到以下消息。这导致输出视频冻结。

skipping 5 segments ahead, expired from playlists
Run Code Online (Sandbox Code Playgroud)

如何告诉ffmpeg只写框架而忽略它们已过期?我宁愿看到一个断断续续的视频,也不要只是停滞不前。

ffmpeg

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

Django rest_framework:序列化程序中的子对象计数

我需要计算一个对象有多少个子对象,并通过对象序列化程序在我的 API 中返回这个值。我还需要计算这些子对象的一个​​子集。

我有一个带有儿童受让人的 Task 对象。在我的 API 中,当我查询任务时,我希望返回以下数据集:

[
    { label: "Cross the bridge",
      count_assigned: 5,
      count_completed: 3 },
    { label: "Build a fire",
      count_assigned: 5,
      count_completed: 2 }
]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我找到了.annotate()方法,但该结果在序列化程序类中不可用。

模型.py

class Task(models.Model):
    label         = models.CharField(max_length=255,null=False,blank=False)

class Assignee(models.model):
    task         = models.ForeignKey(Task, related_name='assignees', on_delete=models.CASCADE, blank=True, null=True) 
    person       = models.ForeignKey(Person, on_delete=models.CASCADE, blank=True, null=True)
    completed    = models.DateTimeField(null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)

序列化程序.py

from rest_framework import serializers

from .models import Task, Assignee
from people.serializers import PersonSerializer

class AssigneeSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    person = PersonSerializer(read_only=True)

    class …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-models django-rest-framework

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

Tty.c:可加载库和 perl 二进制文件不匹配

我将 Ubuntu 从 zesty 升级到了仿生。在这个过程中,perl 从 5.24.1 升级到了 5.26.1。现在,当我尝试安装Expect.

Tty.c: loadable library and perl binaries are mismatched 
Run Code Online (Sandbox Code Playgroud)

我已经重新安装了 IO::Tty 并且说它已正确安装。还有其他模块报告了类似的错误。

这是失败Expect安装的完整输出。

Fetching http://www.cpan.org/authors/id/J/JA/JACOBY/Expect-1.35.tar.gz
-> OK
Unpacking Expect-1.35.tar.gz
Entering Expect-1.35
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (7.24)
Configuring Expect-1.35
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Expect
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if …
Run Code Online (Sandbox Code Playgroud)

linux perl perl-module

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

使用带有Sweet Alert 2的Bootstrap DatetimePicker - 显示日历超过警报

我正在使用带有表单的SweetAlert2对话框.我想使用Bootstrap DateTimePicker小部件.

日历小部件弹出窗口显示在SweetAlert窗口中,而不是在其顶部.这使警报扩展和收缩 - 您必须在警报内滚动才能看到日历.所需的行为是日历显示为主页面的子项并显示在警报的顶部.

https://jsfiddle.net/ghr2bwoc/13/

  swal({
    title: 'Date picker',
    html: '<input id="datepicker">',
    showConfirmButton: false,
    onOpen: function() {
        $('#datepicker').datetimepicker({});
    },

  }).then(function(result) {

  });
Run Code Online (Sandbox Code Playgroud)

jquery twitter-bootstrap bootstrap-datetimepicker sweetalert2

4
推荐指数
1
解决办法
5551
查看次数

Bootstrap Grid System 在 mat-expansion-panel 中不起作用

在 Angular/Material 中使用 Boostrap 4 网格系统时mat-expansion-panel,网格元素不适合网格。一行中的所有元素都不适合,最后一个元素会转移到新行。

layout angular-material bootstrap-4 angular

4
推荐指数
1
解决办法
730
查看次数

角度-对象作为选择选项值

我有一个带有各种选择框的表单,这些选择框使用对象作为值:

<mat-option [value]="object">

当我通过表单创建新记录时,这非常有用。现在,当我编辑记录时,我遇到objectmat-select-option不是我从休息服务中获得的“相同”对象,因此编辑记录时没有选择我的选择框。

object.id在决定选择哪个选项时,是否可以告诉选择框窗口小部件匹配?我想可能需要编写一条指令来处理此问题,但是使用Angular或Angular Material库或其他现有解决方案可能已经可以实现。

详细来说,我有我的foo.component.ts文件:

let item = {
    'fruit': { id: 1, 'label': 'Pineapple' },
}

let options = [
    { 'id':1, 'label': 'Pineapple' },
    { 'id':2, 'label': 'Banana' },
    { 'id':3, 'label': 'Papaya' }
]
Run Code Online (Sandbox Code Playgroud)

而我的.html文件:

<mat-select  placeholder="Fruit" [(ngModel)]="item.fruit">
  <mat-option *ngFor="let option of options" [value]="option">{{option.label}}</mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)

用户访问页面时,他们应该看到在中选择的“菠萝” mat-select。由于item.fruitoptions数组中的“菠萝” 没有指向同一个“菠萝”对象,因此- mat-select为空。

我想看到类似的东西:

<mat-select          
    placeholder="Fruit" 
    [(ngModel)]="item.fruit" 
    equalityAttr="id"
>
Run Code Online (Sandbox Code Playgroud)

typescript angular-material angular angular-forms

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

Django DRF - 通过权限限制对列表视图的访问

我有一个 DRF ViewSet,我正在向其中添加CanViewAndEditStaff权限。我只希望某些用户 ( user.access_level < 2) 能够查看员工列表。在我的权限类中,如何区分对list视图的调用和对get项目视图的调用。这是我的权限类:

class CanViewAndEditStaff(permissions.BasePermission):

        def has_permission(self, request, view):

            # IF THIS IS A LIST VIEW, CHECK ACCESS LEVEL
            if ( request.user.access_level < 3 ):
                return True

            # ELSE, CONTINUE ON TO OBJECT PERMISSIONS

        def has_object_permission(self,request,view,account):

            # admin can do anything
            if ( request.user.access_level == 1 ):
                return True

            # view/edit/delete
            else:

                # users can view their own account
                if  account == request.user:
                    return True

                elif account.access_level >= …
Run Code Online (Sandbox Code Playgroud)

python django permissions python-3.x django-rest-framework

2
推荐指数
1
解决办法
2013
查看次数