You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Supersedes #11.
In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:
- It uses an Django internal API, the Field.column attribute. Granted,
this package already uses a lot of internal APIs, and Field.column
is highly unlikely to change. However, in general using less internal
APIs is better for future compatibility.
- Using low-level API misses a lot of code paths that could have been
tested.
- Neither db_table nor db_column is escaped. In case we later
incorporate tests involving pathological SQL object identifiers, we
have to further use quote_name, which is not exactly public API
either.
Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.
Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
0 commit comments