簡體   English   中英

如何修改模型字段,然后使用Python / Django中的Rest框架將其發送?

[英]How do I modify a model field and then send it using the Rest Framework in Python/Django?

您好,我需要在其余框架將其發送到客戶端之前修改一些數據。 發送的數據來自模型對象。

這是我的模型的代碼示例。

class UserOptions(models.Model):
    options = models.TextField(null=False, null=True)

現在,當客戶端請求特定用戶的選項時,我需要通過將其他2-3個模型中的元素組合添加到大JSON字符串中來修改選項。 我假設如何通過序列化器來實現此目的,但是我不確定如何相應地專門修改請求的字段。

如果您只想返回這些數據 ,則可以使用自定義SerializerMethodField來完成,該方法將允許您匯總所需的所有數據,然后將其傳遞回API響應。

class UserSerializer(serializers.ModelSerializer):
    options = serializers.SerializerMethodField()

    def get_options(self, obj):
        return {
            "something": obj.something,
        }

另一個選擇是覆蓋to_native (DRF 2)/ to_representation (DRF 3) ,但這全部取決於您需要在何處修改數據以及需要執行多to_representation

在這兩種情況下,您都應該注意N + 1個查詢 ,這些查詢不可避免地會涉及跨外鍵處理數據。


如果要自動保存此自定義數據 ,則可以通過覆蓋視圖上的perform_createperform_update鈎子來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM