Opened 15 years ago

Closed 11 years ago

#11403 closed Bug (needsinfo)

Django Models - Default and Choices made to Table Schema

Reported by: seanmccully Owned by: nobody
Component: Database layer (models, ORM) Version: 1.0
Severity: Normal Keywords: Models Default Choices
Cc: Triage Stage: Design decision needed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I am pretty new to Django/python. While working on a project for Work, Ive run into a few seperations the Database layer from Table Schemas. We are using Postgres database(s), and when applying the column attribute Default or Choices to Fields Ive noticed that this is not applied to the table schema as an enumerated type and default keyword.

As such, I would like to see when choices are applied to a field the database schema uses an enumerated type to describe this. This enforces several data constinencies, and I think is a better way to describe the data and I believe saves space by values being stored as an index not a string value of descriptions (makes sense?).
The same goes for default, and adding a DEFAULT behavior for the column/field.

Change History (5)

comment:1 by Russell Keith-Magee, 14 years ago

Triage Stage: UnreviewedDesign decision needed

There is a larger issue here that needs to be addressed - to what extent should the ORM hide the discrepancies between databases? This is part of a family of issues that we need to look at - e.g., support for ON DELETE CASCADE/RESTRICT has similar issues.

comment:2 by Julien Phalip, 13 years ago

Severity: Normal
Type: Bug

comment:3 by Aymeric Augustin, 12 years ago

UI/UX: unset

Change UI/UX from NULL to False.

comment:4 by Aymeric Augustin, 12 years ago

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:5 by Aymeric Augustin, 11 years ago

Resolution: needsinfo
Status: newclosed

This ticket is really about two different features:
1) storing default in the database
2) using enum fields for fields with a limited number of choices

The main drawback both ideas is that changes to the default value or choices will have to be propagated to the database. This requires schema alteration.

These are large problems, I suggest sending concrete proposals to django-developers. The proposal should address backwards-compatibility and if possible include a proof of concept.

Note: See TracTickets for help on using tickets.
Back to Top