fixed in general
This commit is contained in:
@ -49,7 +49,10 @@ class Relation:
|
||||
if i not in self._to_remove
|
||||
]
|
||||
self.related_models = RelationProxy(
|
||||
relation=self, type_=self._type, field_name=self.field_name, data_=cleaned_data
|
||||
relation=self,
|
||||
type_=self._type,
|
||||
field_name=self.field_name,
|
||||
data_=cleaned_data,
|
||||
)
|
||||
relation_name = self._owner.resolve_relation_name(self._owner, self.to)
|
||||
self._owner.__dict__[relation_name] = cleaned_data
|
||||
|
||||
@ -65,17 +65,17 @@ class RelationsManager:
|
||||
relation_name: str,
|
||||
) -> None:
|
||||
to_field: Type[BaseField] = child.Meta.model_fields[relation_name]
|
||||
print('comming', child_name, relation_name)
|
||||
# print('comming', child_name, relation_name)
|
||||
(parent, child, child_name, to_name,) = get_relations_sides_and_names(
|
||||
to_field, parent, child, child_name, virtual
|
||||
)
|
||||
|
||||
print('adding', parent.get_name(), child.get_name(), child_name)
|
||||
# print('adding', parent.get_name(), child.get_name(), child_name)
|
||||
parent_relation = parent._orm._get(child_name)
|
||||
if parent_relation:
|
||||
parent_relation.add(child) # type: ignore
|
||||
|
||||
print('adding', child.get_name(), parent.get_name(), child_name)
|
||||
# print('adding', child.get_name(), parent.get_name(), child_name)
|
||||
child_relation = child._orm._get(to_name)
|
||||
if child_relation:
|
||||
child_relation.add(parent)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Any, TYPE_CHECKING
|
||||
from typing import Any, Optional, TYPE_CHECKING
|
||||
|
||||
import ormar
|
||||
from ormar.exceptions import NoMatch, RelationshipInstanceError
|
||||
@ -12,7 +12,11 @@ if TYPE_CHECKING: # pragma no cover
|
||||
|
||||
class RelationProxy(list):
|
||||
def __init__(
|
||||
self, relation: "Relation", type_: "RelationType", field_name: str, data_: Any = None
|
||||
self,
|
||||
relation: "Relation",
|
||||
type_: "RelationType",
|
||||
field_name: str,
|
||||
data_: Any = None,
|
||||
) -> None:
|
||||
super().__init__(data_ or ())
|
||||
self.relation: "Relation" = relation
|
||||
@ -20,8 +24,17 @@ class RelationProxy(list):
|
||||
self.field_name = field_name
|
||||
self._owner: "Model" = self.relation.manager.owner
|
||||
self.queryset_proxy = QuerysetProxy(relation=self.relation, type_=type_)
|
||||
self._related_field_name: Optional[str] = None
|
||||
|
||||
@property
|
||||
def related_field_name(self) -> str:
|
||||
if self._related_field_name:
|
||||
return self._related_field_name
|
||||
owner_field = self._owner.Meta.model_fields[self.field_name]
|
||||
self.related_field_name = owner_field.related_name or self._owner.get_name() + 's'
|
||||
self._related_field_name = (
|
||||
owner_field.related_name or self._owner.get_name() + "s"
|
||||
)
|
||||
return self._related_field_name
|
||||
|
||||
def __getattribute__(self, item: str) -> Any:
|
||||
if item in ["count", "clear"]:
|
||||
|
||||
Reference in New Issue
Block a user