diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-06 10:57:54 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-06 10:57:54 +0200 |
commit | d0c41db15d9bc583a639a6f46b9376092dda1e11 (patch) | |
tree | 0262b718b58e6cbd459549674af69b7a130141e3 | |
parent | e2f4f113f4b3f5742c4b61707bfbe2d8fa6cca91 (diff) | |
download | Ishtar-d0c41db15d9bc583a639a6f46b9376092dda1e11.tar.bz2 Ishtar-d0c41db15d9bc583a639a6f46b9376092dda1e11.zip |
Serialization: natural key for relations between context records
-rw-r--r-- | archaeological_context_records/models.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index f0786e762..875a48019 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -884,6 +884,13 @@ class RelationType(GeneralRelationType): ordering = ('order', 'label') +class RecordRelationsManager(models.Manager): + def get_by_natural_key(self, left_record, right_record, relation_type): + return self.get(left_record__uuid=left_record, + right_record__uuid=right_record, + relation_type__txt_idx=relation_type) + + class RecordRelations(GeneralRecordRelations, models.Model): MAIN_ATTR = 'left_record' left_record = models.ForeignKey(ContextRecord, @@ -891,6 +898,7 @@ class RecordRelations(GeneralRecordRelations, models.Model): right_record = models.ForeignKey(ContextRecord, related_name='left_relations') relation_type = models.ForeignKey(RelationType) + objects = RecordRelationsManager() TABLE_COLS = [ "left_record__label", "left_record__unit", "left_record__parcel", "relation_type", @@ -922,6 +930,10 @@ class RecordRelations(GeneralRecordRelations, models.Model): ("view_recordrelation", "Can view all Context record relations"), ] + def natural_key(self): + return self.left_record.uuid, self.right_record.uuid, \ + self.relation_type.txt_idx + post_delete.connect(post_delete_record_relation, sender=RecordRelations) |