﻿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
18389	Field type attributes not permitted on models	john.arnfield@…	drtyrsa	"I have a situation where I need to reference a django model-field type in my models, something that would look like the following:

{{{
from django.db import models
class MyModel(models.Model):
  referenced_field = models.CharField
  # ... field declarations here
}}}

The omission of parenthesis on the CharField is intentional. I do not want to create a field on this model, I simply need to reference a field type that this model is associated with.

Unfortunately this causes a type error:

{{{
TypeError: Error when calling the metaclass bases
    unbound method contribute_to_class() must be called with AutoField instance as first argument (got ModelBase instance instead)
}}}

This is down to ModelBase.add_to_class being overly naive in the way it calls contribute_to_class (it uses hasattr to check for things that define contribute_to_class, but doesn't care if they're types or objects).

One solution to this problem would be to change the class attribute in to a classmethod, but the problem seems a little unnecessary and feels like it should be cleaned up regardless. Unfortunately, I'm not sure what the ideal solution would be for this case, else I'd already have submit a patch.
"	Bug	closed	Database layer (models, ORM)	1.4	Normal	fixed			Accepted	1	0	0	0	0	0
