﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32759	Use dataclasses to represent models	adsharma	nobody	"Django documentation and current practice are described in this example:

https://docs.djangoproject.com/en/3.2/intro/tutorial02/#creating-models

This has a number of limitations:

* Python's type checkers don't understand models.CharField and models.DateTimeField
* They do understand python strings and datetime objects
* There is some activity on typing-sig about teaching them more about lengths and limits

dataclasses introduced in 3.7 are seeing some adoption.

The same example can be represented as:

https://github.com/adsharma/fquery/pull/2

This is more ergonomic for python programmers trained on dataclasses.

Queries against these dataclasses can be expressed in one of two ways:

* A method chaining API such as:

https://github.com/adsharma/fquery/blob/main/tests/test_operators.py

* SQL via ActiveRecord or DataMapper

https://github.com/adsharma/dataclasses-sql/blob/master/tests/test_decorators.py

For this to work as well as current django models, two things need to happen:

* How to pass additional metadata about database schema? (dataclasses support metadata, perhaps make it more ergonomic?)
* What to do about indices, views and other db concepts

One school of thought is to use SQL DDL. 

Some conversation on this topic here:

https://twitter.com/arundsharma/status/1390898932713066499

Would love to hear more from the django community on the topic."	New feature	closed	Database layer (models, ORM)	3.2	Normal	wontfix			Unreviewed	0	0	0	0	0	0
