相关疑难解决方法(0)

django-rest-framework:相同URL中的独立GET和PUT,但不同的泛型视图

我正在使用django-rest-framework,我需要在URL文件中映射两个具有相同url的通用视图(iḿ已经使用了URL而不是Routes):

我需要在一个url(例如/ api/places/222)中允许GET,PUT和DELETE动词,并允许每个人使用相关的Entity Place获取每个字段,但只允许使用相同的url更新(PUT)一个字段.

放置实体:

- id (not required in PUT)
- name (required always)
- date (not required in PUT but required in POST)
Run Code Online (Sandbox Code Playgroud)

网址

url(r'^api/places/(?P<pk>\d+)/?$', PlacesDetail.as_view(), name='places-detail'),
Run Code Online (Sandbox Code Playgroud)

我尝试使用RetrieveDestroyAPIView和UpdateAPIView,但我不能只使用一个URL.

get put django-rest-framework

12
推荐指数
1
解决办法
2474
查看次数

如何使字段在 Django REST framework 中创建时可编辑和只读

我想实现一种 Django 模型的常量字段。我希望在创建模型实例时设置该字段(通过 REST 框架 API),但在更新此字段时必须禁止更改。在 Django 本身或 REST framework 序列化器选项中是否有一种优雅的方法来做到这一点?

django django-rest-framework

12
推荐指数
1
解决办法
1982
查看次数

DJango REST Framework 只读字段

我有一个字段owner是一个ForeignKeyUser模型。

该字段是required在创建时。但是以后就不能改了。

如何制作字段Non-Editable?除了创建多个序列化程序还有其他方法吗?

车库模型

class GarageDetails(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, )
    name = models.CharField(_('Garage Name'), max_length=254, blank=False, null=False, unique=True)
    price = models.IntegerField(_('Price'), blank=False)
    available_from = models.TimeField(_('Available From'), default=datetime.time(6, 00), blank=False)
    available_till = models.TimeField(_('Available till'), default=datetime.time(18, 00), blank=False)
    description = models.TextField(_('Garage Description'), blank=True, null=True)

    create_date = cmodels.UnixTimestampField(_('Date Added'), auto_now_add=True)
    update_date = cmodels.UnixTimestampField(_('Date Added'), auto_created=True)
    is_available = models.BooleanField(_('Available'), default=True)
Run Code Online (Sandbox Code Playgroud)

序列化器

class UserFKSerializer(serializers.ModelSerializer):

    class Meta:
        model = get_user_model()
        fields = ('id', 'name', 'email', …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-rest-framework

10
推荐指数
1
解决办法
8537
查看次数

Django Rest Framework 如何禁止用户更改用户名?

我正在创建UserSerializer并希望允许用户创建新帐户但禁止他们更改用户名。read_only我可以应用一个属性,但用户在创建新用户名时将无法设置用户名。但没有它它允许我改变它。required不幸的是,还有一个属性不能与 read_only 一起使用。没有其他相关属性。一种解决方案是创建 2 个不同的序列化程序,一个用于创建 User,另一个用于更改他,但这似乎是丑陋和错误的做法。您对如何在不编写 2 个序列化程序的情况下实现这一目标有什么建议吗?

感谢您的任何建议。

PS:我使用的是 python3.6 和 django2.1

编辑:我正在使用generics.{ListCreateAPIView|RetrieveUpdateDestroyAPIView}类来查看视图。像这样:

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer


class UserDetails(generics.RetrieveUpdateAPIView):
    # this magic means (read only request OR accessing user is the same user being edited OR user is admin)
    permission_classes = (perm_or(ReadOnly, perm_or(IsUserOwner, IsAdmin)),)

    queryset = User.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

EDIT2:有一个重复的问题(可能我的是一式两份)在这里

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

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

如何在 DRF 中使字段可编辑=False

我有一个序列化器。我想限制更新字段。我该怎么做呢?

class ABCSerializer(serializers.ModelSerializer):
    class Meta:
        """Meta."""

        model = ModelA
        fields = ('colA', 'colB', 'colC',)
Run Code Online (Sandbox Code Playgroud)

colA是创建对象时的必填字段。但是,不应允许其更新。我怎样才能做到这一点??

python django django-rest-framework

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

标签 统计

django-rest-framework ×5

django ×4

python ×2

python-3.x ×2

get ×1

put ×1

rest ×1