mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Refs #28147 -- Fixed setting of OneToOne and Foreign Key fields to None when using attnames.
Regression in 519016e5f2.
This commit is contained in:
committed by
Mariusz Felisiak
parent
619c9a4f49
commit
4122d9d3f1
@@ -19,9 +19,9 @@ from django.utils.translation import gettext_lazy as _
|
||||
from . import Field
|
||||
from .mixins import FieldCacheMixin
|
||||
from .related_descriptors import (
|
||||
ForwardManyToOneDescriptor, ForwardOneToOneDescriptor,
|
||||
ManyToManyDescriptor, ReverseManyToOneDescriptor,
|
||||
ReverseOneToOneDescriptor,
|
||||
ForeignKeyDeferredAttribute, ForwardManyToOneDescriptor,
|
||||
ForwardOneToOneDescriptor, ManyToManyDescriptor,
|
||||
ReverseManyToOneDescriptor, ReverseOneToOneDescriptor,
|
||||
)
|
||||
from .related_lookups import (
|
||||
RelatedExact, RelatedGreaterThan, RelatedGreaterThanOrEqual, RelatedIn,
|
||||
@@ -764,7 +764,7 @@ class ForeignKey(ForeignObject):
|
||||
By default ForeignKey will target the pk of the remote model but this
|
||||
behavior can be changed by using the ``to_field`` argument.
|
||||
"""
|
||||
|
||||
descriptor_class = ForeignKeyDeferredAttribute
|
||||
# Field flags
|
||||
many_to_many = False
|
||||
many_to_one = True
|
||||
|
||||
@@ -67,9 +67,17 @@ from django.core.exceptions import FieldError
|
||||
from django.db import connections, router, transaction
|
||||
from django.db.models import Q, signals
|
||||
from django.db.models.query import QuerySet
|
||||
from django.db.models.query_utils import DeferredAttribute
|
||||
from django.utils.functional import cached_property
|
||||
|
||||
|
||||
class ForeignKeyDeferredAttribute(DeferredAttribute):
|
||||
def __set__(self, instance, value):
|
||||
if instance.__dict__.get(self.field.attname) != value and self.field.is_cached(instance):
|
||||
self.field.delete_cached_value(instance)
|
||||
instance.__dict__[self.field.attname] = value
|
||||
|
||||
|
||||
class ForwardManyToOneDescriptor:
|
||||
"""
|
||||
Accessor to the related object on the forward side of a many-to-one or
|
||||
|
||||
Reference in New Issue
Block a user