我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用django.db.models.fields.related.ForeignObject()。
def __init__(self, to, **kwargs): """ create the ForeignObject, but use the to_fields as a dict which will later used as form_fields and to_fields """ to_fields = kwargs["to_fields"] self.null_if_equal = kwargs.pop("null_if_equal", []) nullable_fields = kwargs.pop("nullable_fields", {}) if not isinstance(nullable_fields, dict): nullable_fields = {v: None for v in nullable_fields} self.nullable_fields = nullable_fields # a list of tuple : (fieldnaem, value) . if fielname = value, then the field react as if fieldnaem_id = None self._raw_fields = self.compute_to_fields(to_fields) # hiro nakamura should have said «very bad guy. you are vilain» if "on_delete" in kwargs: kwargs["on_delete"] = self.override_on_delete(kwargs["on_delete"]) kwargs["to_fields"], kwargs["from_fields"] = zip(*( (k, v.value) for k, v in self._raw_fields.items() if v.is_local_field )) super(CompositeForeignKey, self).__init__(to, **kwargs)
def __init__(self, to, **kwargs): kwargs['verbose_name'] = kwargs.get('verbose_name', None) kwargs['rel'] = GenericRel( self, to, related_query_name=kwargs.pop('related_query_name', None), limit_choices_to=kwargs.pop('limit_choices_to', None), ) # Override content-type/object-id field names on the related class self.object_id_field_name = kwargs.pop("object_id_field", "object_id") self.content_type_field_name = kwargs.pop("content_type_field", "content_type") self.for_concrete_model = kwargs.pop("for_concrete_model", True) kwargs['blank'] = True kwargs['editable'] = False kwargs['serialize'] = False # This construct is somewhat of an abuse of ForeignObject. This field # represents a relation from pk to object_id field. But, this relation # isn't direct, the join is generated reverse along foreign key. So, # the from_field is object_id field, to_field is pk because of the # reverse join. super(GenericRelation, self).__init__( to, to_fields=[], from_fields=[self.object_id_field_name], **kwargs)
def __init__(self, to, **kwargs): kwargs['verbose_name'] = kwargs.get('verbose_name', None) kwargs['rel'] = GenericRel( self, to, related_name=kwargs.pop('related_name', None), limit_choices_to=kwargs.pop('limit_choices_to', None),) # Override content-type/object-id field names on the related class self.object_id_field_name = kwargs.pop("object_id_field", "object_id") self.content_type_field_name = kwargs.pop("content_type_field", "content_type") self.for_concrete_model = kwargs.pop("for_concrete_model", True) kwargs['blank'] = True kwargs['editable'] = False kwargs['serialize'] = False # This construct is somewhat of an abuse of ForeignObject. This field # represents a relation from pk to object_id field. But, this relation # isn't direct, the join is generated reverse along foreign key. So, # the from_field is object_id field, to_field is pk because of the # reverse join. super(GenericRelation, self).__init__( to, to_fields=[], from_fields=[self.object_id_field_name], **kwargs)
def contribute_to_class(self, cls, name, virtual_only=False): super(ForeignObject, self).contribute_to_class(cls, name, virtual_only=virtual_only) setattr(cls, self.name, CompositeForwardManyToOneDescriptor(self))
def contribute_to_class(self, cls, name, virtual_only=False): super(related.ForeignObject, self).contribute_to_class(cls, name, virtual_only=virtual_only) setattr(cls, self.name, TextFormatRelatedObjectDescriptor(self))