序列化器内部的django-rest-framework访问字段

宇宙驯鹿

所以我有一个这样的模型

class DataSheet(BaseModel):
    """
    Represents a single dataSheet.
    dataSheets have their own model at the core. Model data is added to
    the dataSheets in the form of separate records.
    """

    class Meta:
        verbose_name = 'datasheet'
        verbose_name_plural = 'datasheets'
        ordering = ['position', 'cluster']
        required_db_features = {
            'supports_deferrable_unique_constraints',
        }
        constraints = [
            models.UniqueConstraint(
                fields=['position', 'cluster'],
                name='deferrable_unique_datasheet_position',
                deferrable=models.Deferrable.DEFERRED
            )
        ]

    def __str__(self):
        return self.name

    objects = managers.DataSheetsManager()
    positions = managers.PositionalManager()
    position = models.PositiveSmallIntegerField(db_index=True, editable=True)
    name = models.CharField(max_length=100, validators=[MinLengthValidator(2)], db_index=True)
    description = models.CharField(max_length=1024, null=True, blank=True, db_index=True)
    owner = models.ForeignKey('api_backend.Member', on_delete=models.CASCADE, db_index=True, editable=False)
    fields = models.ManyToManyField('api_backend.Field')
    overwrites = models.ManyToManyField('api_backend.RoleOverwrite')
    parent = models.ForeignKey('api_backend.Category', on_delete=models.CASCADE, null=True, blank=True)
    cluster = models.ForeignKey('api_backend.Cluster', on_delete=models.CASCADE, editable=False)

    REQUIRED_FIELDS = [name, owner, cluster]

和这样的序列化器

class DataSheetSerializer(serializers.ModelSerializer):
    """
    A serialized DataSheet Object.
    Datasheets have their own:
        - array of fields
        - array of role-overwrites
    """

    def get_fields(self):
        fields = super(DataSheetSerializer, self).get_fields()
        fields['parent'].queryset = self.cluster.categories.all()

        return fields

    class Meta:
        model = DataSheet
        read_only_fields = ['position']
        fields = '__all__'

    # need to make sure that the parent category of the datasheet
    # belongs to the datasheet's cluster only.

    fields = partial.PartialFieldSerializer(many=True, read_only=True)
    overwrites = partial.PartialOverWriteSerializer(many=True, read_only=True)

问题是,我想cluster在get_fields方法内部访问序列化器模型的字段。但是,我不能做同样的事情。有人能帮我吗?

我看到了其他涉及initial_data的答案,但这在这里不起作用。

fields['parent'].queryset = self.cluster.categories.all()

cluster是此处未解决的参考。

阿什温地带

selfget_fieldsDataSheetSerializer实例不是DataSheet模型实例。因此它不应该具有群集属性。您无法访问模型DataSheet实例,get_fields因为它从类DataSheet而不是从其实例获取字段您可以像验证字段

class DataSheetSerializer(serializers.ModelSerializer):
    # ... other code

    def validate(self, data):
         parent = data.get('parent')
         # check if parent is valid i.e in queryset
         # if yes return data
         # else raise serializers.validationError

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django REST Framework如何限制用户对某些序列化器字段的访问

来自分类Dev

Django REST Framework序列化器字段必填= false

来自分类Dev

Django Rest Framework中的序列化器字段筛选?

来自分类Dev

Django REST Framework序列化器字段必填= false

来自分类Dev

序列化器上的Django Rest Framework条件字段

来自分类Dev

Django Rest Framework-筛选序列化器字段

来自分类Dev

从Django Rest Framework序列化器中排除字段

来自分类Dev

Django Rest Framework序列化器-返回相关字段

来自分类Dev

不同的字段类型序列化器 - Django Rest Framework

来自分类Dev

Django Rest Framework-仅反序列化的序列化器字段

来自分类Dev

具有内部关系的Django rest_framework序列化器

来自分类Dev

在Django Rest Framework中通过URL访问序列化程序字段

来自分类Dev

Django Rest Framework序列化器分别渲染表单

来自分类Dev

Django Rest Framework上的序列化器导入错误

来自分类Dev

django-rest-framework序列化器to_representation

来自分类Dev

Django Rest Framework序列化器丢失数据

来自分类Dev

Django Rest Framework可写嵌套序列化器

来自分类Dev

Django Rest Framework序列化器和视图

来自分类Dev

搜索视图/序列化器-Django Rest Framework

来自分类Dev

Django REST Framework嵌套的序列化器无效

来自分类Dev

Django Rest Framework嵌套的序列化器创建方法

来自分类Dev

Django Rest Framework的双重嵌套序列化器

来自分类Dev

Django Rest Framework嵌套序列化器

来自分类Dev

django rest-framework 序列化器反向关系

来自分类Dev

Django rest 框架 - 模型序列化器不会序列化所有字段

来自分类Dev

Django Rest Framework-在序列化器中获取相关模型字段

来自分类Dev

将计数字段添加到Django Rest Framework序列化器

来自分类Dev

Django Rest Framework-如何在序列化器中嵌套多个字段?

来自分类Dev

Django REST Framework 3中的其他序列化器字段

Related 相关文章

  1. 1

    Django REST Framework如何限制用户对某些序列化器字段的访问

  2. 2

    Django REST Framework序列化器字段必填= false

  3. 3

    Django Rest Framework中的序列化器字段筛选?

  4. 4

    Django REST Framework序列化器字段必填= false

  5. 5

    序列化器上的Django Rest Framework条件字段

  6. 6

    Django Rest Framework-筛选序列化器字段

  7. 7

    从Django Rest Framework序列化器中排除字段

  8. 8

    Django Rest Framework序列化器-返回相关字段

  9. 9

    不同的字段类型序列化器 - Django Rest Framework

  10. 10

    Django Rest Framework-仅反序列化的序列化器字段

  11. 11

    具有内部关系的Django rest_framework序列化器

  12. 12

    在Django Rest Framework中通过URL访问序列化程序字段

  13. 13

    Django Rest Framework序列化器分别渲染表单

  14. 14

    Django Rest Framework上的序列化器导入错误

  15. 15

    django-rest-framework序列化器to_representation

  16. 16

    Django Rest Framework序列化器丢失数据

  17. 17

    Django Rest Framework可写嵌套序列化器

  18. 18

    Django Rest Framework序列化器和视图

  19. 19

    搜索视图/序列化器-Django Rest Framework

  20. 20

    Django REST Framework嵌套的序列化器无效

  21. 21

    Django Rest Framework嵌套的序列化器创建方法

  22. 22

    Django Rest Framework的双重嵌套序列化器

  23. 23

    Django Rest Framework嵌套序列化器

  24. 24

    django rest-framework 序列化器反向关系

  25. 25

    Django rest 框架 - 模型序列化器不会序列化所有字段

  26. 26

    Django Rest Framework-在序列化器中获取相关模型字段

  27. 27

    将计数字段添加到Django Rest Framework序列化器

  28. 28

    Django Rest Framework-如何在序列化器中嵌套多个字段?

  29. 29

    Django REST Framework 3中的其他序列化器字段

热门标签

归档