1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
diff -aur SwampDragon-0.4.2.2.o/swampdragon/serializers/serializer_tools.py SwampDragon-0.4.2.2/swampdragon/serializers/serializer_tools.py
--- SwampDragon-0.4.2.2.o/swampdragon/serializers/serializer_tools.py 2015-05-05 14:22:16.000000000 -0700
+++ SwampDragon-0.4.2.2/swampdragon/serializers/serializer_tools.py 2016-03-09 17:55:20.098130877 -0800
@@ -1,7 +1,21 @@
from collections import namedtuple
-from django.db.models.fields.related import ForeignKey, ReverseSingleRelatedObjectDescriptor, \
- ManyRelatedObjectsDescriptor, ReverseManyRelatedObjectsDescriptor, ForeignRelatedObjectsDescriptor, \
- SingleRelatedObjectDescriptor
+from django.db.models.fields.related import ForeignKey
+try:
+ # bis 1.8.x
+ from django.db.models.fields.related import ReverseSingleRelatedObjectDescriptor
+ from django.db.models.fields.related import ManyRelatedObjectsDescriptor
+ from django.db.models.fields.related import ReverseManyRelatedObjectsDescriptor
+ from django.db.models.fields.related import ForeignRelatedObjectsDescriptor
+ from django.db.models.fields.related import SingleRelatedObjectDescriptor
+ pre19syntax = True
+except:
+ # ab 1.9.0
+ from django.db.models.fields.related import ForwardManyToOneDescriptor
+ from django.db.models.fields.related import ManyToManyDescriptor
+ from django.db.models.fields.related import ReverseManyToOneDescriptor
+ from django.db.models.fields.related import ReverseOneToOneDescriptor
+ pre19syntax = False
+
# from django.db.models.related import RelatedObject
from django.db.models.fields.related import ForeignObjectRel
from django.db.models.fields.related import ManyToManyField
@@ -73,11 +87,18 @@
continue
field_type = getattr(serializer.opts.model, field_name)
- is_fk = isinstance(field_type, ReverseSingleRelatedObjectDescriptor)
- is_o2o = isinstance(field_type, SingleRelatedObjectDescriptor)
- is_reverse_fk = isinstance(field_type, ForeignRelatedObjectsDescriptor)
- is_m2m = isinstance(field_type, ManyRelatedObjectsDescriptor)
- is_reverse_m2m = isinstance(field_type, ReverseManyRelatedObjectsDescriptor)
+ if pre19syntax:
+ is_fk = isinstance(field_type, ReverseSingleRelatedObjectDescriptor)
+ is_o2o = isinstance(field_type, SingleRelatedObjectDescriptor)
+ is_reverse_fk = isinstance(field_type, ForeignRelatedObjectsDescriptor)
+ is_m2m = isinstance(field_type, ManyRelatedObjectsDescriptor)
+ is_reverse_m2m = isinstance(field_type, ReverseManyRelatedObjectsDescriptor)
+ else:
+ is_fk = isinstance(field_type, ForwardManyToOneDescriptor)
+ is_o2o = isinstance(field_type, ReverseOneToOneDescriptor)
+ is_reverse_fk = isinstance(field_type, ReverseManyToOneDescriptor)
+ is_m2m = isinstance(field_type, ManyToManyDescriptor) and not field_type.reverse
+ is_reverse_m2m = isinstance(field_type, ManyToManyDescriptor) and field_type.reverse
try:
val = getattr(serializer.instance, field_name)
|