To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example, FK)
also use a "client data" of the attribute, the processing of which is
performed by a particular descriptor. Such a descriptor is usually
assigned to a model using **Field.name**.
This enables us to process and present data in different ways:
article.author returns a User object, and article.auther_id returns a User
object pk.
This feature is not used in model.FileField. Then why use FileField.name
instead of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor uses field.attname and
continue working with the DeferredAttribute class.
--
Ticket URL: <https://code.djangoproject.com/ticket/31701>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
> The model fields use, by default, the descriptor **DeferredAttribute** to
> access and process (if necessary) the data associated with them. This
> type of data represents the actual data in db column. I prefer to call it
> a “field data”.
>
> To access the field data in instance dict, **Field.attname** is used as a
> key.
>
> In addition to the field data, some other model fields (for example, FK)
> also use a "client data" of the attribute, the processing of which is
> performed by a particular descriptor. Such a descriptor is usually
> assigned to a model using **Field.name**.
>
> This enables us to process and present data in different ways:
> article.author returns a User object, and article.auther_id returns a
> User object pk.
>
> This feature is not used in model.FileField. Then why use FileField.name
> instead of FileField.attname for FileDescriptor?
>
> I think it would be better if FileDescriptor uses field.attname and
> continue working with the DeferredAttribute class.
New description:
The model fields use, by default, the descriptor **DeferredAttribute** to
access and process (if necessary) the data associated with them. This type
of data represents the actual data in db column. I prefer to call it a
“field data”.
To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example,
ForeignKey) also use a "client data" of the attribute, the processing of
which is performed by a particular descriptor. Such a descriptor is
usually assigned to a model using **Field.name**.
This enables us to process and present data in different ways:
article.author returns a User object, and article.auther_id returns a User
object pk.
This feature is not used in model.FileField. Then why use FileField.name
instead of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor uses field.attname and
continue working with the DeferredAttribute class.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:1>
* version: 3.1 => master
Old description:
> The model fields use, by default, the descriptor **DeferredAttribute** to
> access and process (if necessary) the data associated with them. This
> type of data represents the actual data in db column. I prefer to call it
> a “field data”.
>
> To access the field data in instance dict, **Field.attname** is used as a
> key.
>
> In addition to the field data, some other model fields (for example,
> ForeignKey) also use a "client data" of the attribute, the processing of
> which is performed by a particular descriptor. Such a descriptor is
> usually assigned to a model using **Field.name**.
>
> This enables us to process and present data in different ways:
> article.author returns a User object, and article.auther_id returns a
> User object pk.
>
> This feature is not used in model.FileField. Then why use FileField.name
> instead of FileField.attname for FileDescriptor?
>
> I think it would be better if FileDescriptor uses field.attname and
> continue working with the DeferredAttribute class.
New description:
The model fields use, by default, the descriptor **DeferredAttribute** to
access and process (if necessary) the data associated with them. This type
of data represents the actual data in db column. I prefer to call it a
“field data”.
To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example,
ForeignKey) also use a "client data" of the attribute, the processing of
which is performed by a particular descriptor. Such a descriptor is
usually assigned to a model using **Field.name**.
This enables us to process and present the data in different ways:
article.author returns a User object, and article.auther_id returns a User
object pk.
This feature is not used in model.FileField. Then why use FileField.name
instead of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor uses field.attname and
continue working with the DeferredAttribute class.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:2>
Old description:
> The model fields use, by default, the descriptor **DeferredAttribute** to
> access and process (if necessary) the data associated with them. This
> type of data represents the actual data in db column. I prefer to call it
> a “field data”.
>
> To access the field data in instance dict, **Field.attname** is used as a
> key.
>
> In addition to the field data, some other model fields (for example,
> ForeignKey) also use a "client data" of the attribute, the processing of
> which is performed by a particular descriptor. Such a descriptor is
> usually assigned to a model using **Field.name**.
>
> This enables us to process and present the data in different ways:
> article.author returns a User object, and article.auther_id returns a
> User object pk.
>
> This feature is not used in model.FileField. Then why use FileField.name
> instead of FileField.attname for FileDescriptor?
>
> I think it would be better if FileDescriptor uses field.attname and
> continue working with the DeferredAttribute class.
New description:
The model fields use, by default, the descriptor **DeferredAttribute** to
access and process (if necessary) the data associated with them. This type
of data represents the actual data in db column. I prefer to call it a
“field data”.
To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example,
ForeignKey) also use a "client data" of the attribute, the processing of
which is performed by a particular descriptor. Such a descriptor is
usually assigned to a model using **Field.name**. Its task is to present
the same field data in a different format, the result of which differs
from the result of Field.attname descriptor: `article.author` returns a
User object, and `article.auther_id` returns a User object pk.
This feature is not used in FileField. Then why use FileField.name instead
of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor uses FileField.attname and
continue working with the DeferredAttribute class.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:3>
Old description:
> The model fields use, by default, the descriptor **DeferredAttribute** to
> access and process (if necessary) the data associated with them. This
> type of data represents the actual data in db column. I prefer to call it
> a “field data”.
>
> To access the field data in instance dict, **Field.attname** is used as a
> key.
>
> In addition to the field data, some other model fields (for example,
> ForeignKey) also use a "client data" of the attribute, the processing of
> which is performed by a particular descriptor. Such a descriptor is
> usually assigned to a model using **Field.name**. Its task is to present
> the same field data in a different format, the result of which differs
> from the result of Field.attname descriptor: `article.author` returns a
> User object, and `article.auther_id` returns a User object pk.
> This feature is not used in FileField. Then why use FileField.name
> instead of FileField.attname for FileDescriptor?
>
> I think it would be better if FileDescriptor uses FileField.attname and
> continue working with the DeferredAttribute class.
New description:
The model fields use, by default, the descriptor **DeferredAttribute** to
access and process (if necessary) the data associated with them. This type
of data represents the actual data in db column. I prefer to call it a
“field data”.
To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example,
ForeignKey) also use a "client data" of the attribute, the processing of
which is performed by a particular descriptor. Such a descriptor is
assigned to a model using **Field.name**. Its task is to present the same
field data in a different format, the result of which differs from the
result of Field.attname descriptor: `article.author` returns a User
object, and `article.auther_id` returns a User object pk.
This feature is not used in FileField. Then why use FileField.name instead
of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor uses FileField.attname and
continue working with the DeferredAttribute class.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:4>
Old description:
> The model fields use, by default, the descriptor **DeferredAttribute** to
> access and process (if necessary) the data associated with them. This
> type of data represents the actual data in db column. I prefer to call it
> a “field data”.
>
> To access the field data in instance dict, **Field.attname** is used as a
> key.
>
> In addition to the field data, some other model fields (for example,
> ForeignKey) also use a "client data" of the attribute, the processing of
> which is performed by a particular descriptor. Such a descriptor is
> assigned to a model using **Field.name**. Its task is to present the same
> field data in a different format, the result of which differs from the
> result of Field.attname descriptor: `article.author` returns a User
> object, and `article.auther_id` returns a User object pk.
>
> This feature is not used in FileField. Then why use FileField.name
> instead of FileField.attname for FileDescriptor?
>
> I think it would be better if FileDescriptor uses FileField.attname and
> continue working with the DeferredAttribute class.
New description:
The model fields use, by default, the descriptor **DeferredAttribute** to
access and process (if necessary) the data associated with them. This type
of data represents the actual data in db column. I prefer to call it a
“field data”.
To access the field data in instance dict, **Field.attname** is used as a
key.
In addition to the field data, some other model fields (for example,
ForeignKey) also use a "client data" of the attribute, the processing of
which is performed by a particular descriptor. Such a descriptor is
assigned to a model using **Field.name**. Its task is to present the same
field data in a different format, the result of which differs from the
result of Field.attname descriptor: `article.author` returns a User
object, and `article.auther_id` returns a User object pk.
This feature is not used in FileField. Then why use FileField.name instead
of FileField.attname for FileDescriptor?
I think it would be better if FileDescriptor extends the DeferredAttribute
class and uses `field.attname` instead of `field.name`.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:5>
* owner: nobody => Sultan
* status: new => assigned
* stage: Unreviewed => Accepted
Comment:
Looks reasonable.
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:6>
Comment (by Sultan):
Replying to [comment:6 felixxm]: It's much better. Thanks.
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:7>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:8>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"a93425a37f4defdb31d4ca96bb3bf6da21f0b5ce" a93425a]:
{{{
#!CommitTicketReference repository=""
revision="a93425a37f4defdb31d4ca96bb3bf6da21f0b5ce"
Fixed #31701 -- Made FileDescriptor subclass DeferredAttribute.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/31701#comment:9>