如何使用 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
我有一个包含敏感数据的模型,比如社会保险号,我想将序列化数据转换为仅显示最后四位数字。
我存储了完整的社会安全号码: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) 我正在使用ffmpeg使用.m3u8网址保存实时流。我经常看到以下消息。这导致输出视频冻结。
skipping 5 segments ahead, expired from playlists
Run Code Online (Sandbox Code Playgroud)
如何告诉ffmpeg只写框架而忽略它们已过期?我宁愿看到一个断断续续的视频,也不要只是停滞不前。
我需要计算一个对象有多少个子对象,并通过对象序列化程序在我的 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
我将 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) 我正在使用带有表单的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
在 Angular/Material 中使用 Boostrap 4 网格系统时mat-expansion-panel,网格元素不适合网格。一行中的所有元素都不适合,最后一个元素会转移到新行。
我有一个带有各种选择框的表单,这些选择框使用对象作为值:
<mat-option [value]="object">
当我通过表单创建新记录时,这非常有用。现在,当我编辑记录时,我遇到object了mat-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.fruit和options数组中的“菠萝” 没有指向同一个“菠萝”对象,因此- mat-select为空。
我想看到类似的东西:
<mat-select
placeholder="Fruit"
[(ngModel)]="item.fruit"
equalityAttr="id"
>
Run Code Online (Sandbox Code Playgroud) 我有一个 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) django ×4
python ×4
angular ×2
bootstrap-4 ×1
django-views ×1
ffmpeg ×1
jquery ×1
layout ×1
linux ×1
perl ×1
perl-module ×1
permissions ×1
python-3.x ×1
sweetalert2 ×1
typescript ×1