Es gibt keine integrierte Möglichkeit, dies zu tun. Sie könnten Verhalten wie das erhalten, indem eine Zwischenklasse zu definieren und die Mutationsverfahren überschreiben *:
class ROModel(Model):
__abstract__=True
@classmethod
def create(cls, **_):
raise NotImplementedError()
def save(self):
raise NotImplementedError()
def update(self, **_):
raise NotImplementedError()
def delete(self):
raise NotImplementedError()
class Test(ROModel):
__keyspace__='test'
k = columns.Integer(primary_key=True)
a = columns.Integer()
b = columns.Integer()
print Test.objects.first()
Test(k=1, b=4).update() # NotImplementedError
Test.create(k=1, a=2, b=3) # NotImplementedError
Test(k=1).delete() # NotImplementedError
Test(k=1, a=3).save() # NotImplementedError
* beachten Sie, dass diese Lösung nur ein Teil - Sie müssen auch ROModel.__queryset__
mit einem ähnlich spezialisierten query.ModelQuerySet
aktualisieren.
Allerdings habe ich Probleme zu verstehen, was dies Ihnen kauft. Jede Lösung, die das Objekt schreibgeschützt macht, führt zu einem Laufzeitfehler, wenn Sie eine Mutationsmethode aufrufen.
In jedem Fall sollten Sie auch besser mit auth und einem Benutzer/einer Rolle mit nur ausgewählten Berechtigungen arbeiten. https://cassandra.apache.org/doc/latest/cql/security.html#data-control
Haben Sie herausgefunden, wie das geht? –
@RohanMonga noch nicht :( – Nilesh
@RohanMonga haben Sie eine Idee, dies zu tun? – Nilesh