我正在开发一款西洋跳棋游戏,并且正在进入“实际实现游戏”部分,该部分位于“获取事物渲染”部分之后。目前我的作品的逻辑是这样的:
struct Square {
Piece * piece;
}
struct Piece {
bool king;
Color color;
}
Run Code Online (Sandbox Code Playgroud)
以及渲染方法和类似的东西。其背后的想法是,方块有时可能是空的,在这种情况下,方块中的指针可以为空。但是,结构体只是用来保存指针的想法让我感到困扰。我的问题是这是否是一个好主意,或者我是否是个白痴并且使事情过于复杂化。
所以,我一直在寻找一种模式或标准一段时间,但我似乎找不到。
假设我有一些序列化器:
WhateverSerializer(serializers.ModelSerializer):
class Meta:
model = Whatever
fields = (
'special',
'field_1',
'field_2'
#a bunch more...
)
Run Code Online (Sandbox Code Playgroud)
我希望仅针对该字段special而不是其他字段有一些特殊的更新行为。有没有一种方法可以覆盖update 而不必像这样重做整个更新方法?
def update(self, instance, validated_data):
special_behaviour(instance.special)
instance.field_1 = validated_data.get('field_1', instance.field_1)
instance.field_2 = validated_data.get('field_2', instance.field_2)
#a bunch more...
Run Code Online (Sandbox Code Playgroud)
我尝试过调用该ModelViewSet.update方法,但它实际上采用的参数与您在视图集中覆盖的参数不同,并且我不确定如何准确地将我拥有的参数传递到该方法中。