cqlengine を使用して Cassandra データベースに新しいエントリを作成しようとしています。最初の投稿で新しいエントリが作成されますが、別のエントリを作成しようとすると、最後の項目が新しい値で更新され、Django サーバーを再起動すると期待どおりに動作します (新しいエントリを作成します)
私のモデルは
# test model udt
class address(UserType):
name = columns.Text()
age = columns.Integer()
street = columns.Text()
zipcode = columns.Integer()
class TestUserProf(Model):
user_id = columns.UUID(primary_key=True, default=uuid.uuid4())
emp_id = columns.Text()
address = columns.UserDefinedType(address)
サイアライザーは
# Test serialzer for test udt
class TestProfSerializer(serializers.Serializer):
user_id = serializers.CharField(max_length=100, required=False)
emp_id = serializers.CharField(max_length=50)
user_addr = serializers.DictField(required=False, source='address')
def create(self, validate_data):
"""
Create new entry in ProfSerializer
:params validate_data
:return :
"""
addr_data = validate_data.get('address')
obj = TestUserProf.objects.create(
emp_id=validate_data.get('emp_id'),
address=address(
name=addr_data.get('name'),
age=addr_data.get('age'),
street=addr_data.get('street'),
zipcode=addr_data.get('zipcode')
)
)
return TestUserProf(**validate_data)
ジャンゴビューは
# Test code for udt
class TestProfView(viewsets.ModelViewSet):
""" Test class of udf
:prams request
:return list of profils
"""
model = TestUserProf
serializer_class = TestProfSerializer
def get_queryset(self):
return TestUserProf.objects.all()
def create(self, request, *args, **kwargs):
serializer = TestProfSerializer(data=request.data)
try:
if serializer.is_valid():
serializer.save()
return Response({'status': 'success'})
else:
return Response({'status': 'not valid...'})
except Exception as e:
return Response({'error': str(e)})
投稿データは
{
"emp_id": "EMP112",
"user_addr": {
"street": "Kochin",
"name": "Thomas John",
"zipcode": 682021,
"age": 29
}
}
成功を返しますが、新しいエントリを作成しようとすると、最後の raw が更新され、
Django サーバーを再起動した後、新しいエントリが正常に作成されていますが、これはなぜですか?