我正在使用Django和Django休息框架。我想创建一个类工厂,它生成具有不同-- ..
owner_id uuid,
FOREIGN KEY(owner_id, bill_id) REFERENCES bill(owner_id, bill_id),
FOREIGN KEY(owner_id, product_id) REFERENCES product(product_id, product_id),
-- ..
类的序列化器类。
Meta
我想根据传递给工厂的参数改变只读字段和字段元组。请指出我正确的方向
答案 0 :(得分:4)
您可以type
使用construct classes dynamically。
首先,构建您的Meta类:
Meta = type('Meta', (object,), {'model': Marks, 'fields': fields, 'read_only_fields': 'read_only_fields'})
然后使用此Meta类构建序列化程序类:
MySerializer = type('MarksSerializer', (serializers.ModelSerializer,), {'Meta': Meta})
这应该为您提供工厂运作所需的工具。
另一种选择是覆盖序列化程序的__init__
方法,并在初始化序列化程序时修改字段。 DRF docs中有一个例子。