| | 82 | for f in self._meta.fields: |
|---|
| | 83 | if isinstance(f.rel, ManyToOneRel): |
|---|
| | 84 | try: |
|---|
| | 85 | # Assume object instance was passed in. |
|---|
| | 86 | rel_obj = kwargs.pop(f.name) |
|---|
| | 87 | except KeyError: |
|---|
| | 88 | try: |
|---|
| | 89 | # Object instance wasn't passed in -- must be an ID. |
|---|
| | 90 | val = kwargs.pop(f.attname) |
|---|
| | 91 | except KeyError: |
|---|
| | 92 | val = f.get_default() |
|---|
| | 93 | else: |
|---|
| | 94 | # Object instance was passed in. |
|---|
| | 95 | # Special case: You can pass in "None" for related objects if it's allowed. |
|---|
| | 96 | if rel_obj is None and f.null: |
|---|
| | 97 | val = None |
|---|
| | 98 | else: |
|---|
| | 99 | try: |
|---|
| | 100 | val = getattr(rel_obj, f.rel.get_related_field().attname) |
|---|
| | 101 | except AttributeError: |
|---|
| | 102 | raise TypeError, "Invalid value: %r should be a %s instance, not a %s" % (f.name, f.rel.to, type(rel_obj)) |
|---|
| | 103 | setattr(self, f.attname, val) |
|---|
| | 104 | else: |
|---|
| | 105 | val = kwargs.pop(f.attname, f.get_default()) |
|---|
| | 106 | setattr(self, f.attname, val) |
|---|
| 83 | | for f in self._meta.fields: |
|---|
| 84 | | if isinstance(f.rel, ManyToOneRel): |
|---|
| 85 | | try: |
|---|
| 86 | | # Assume object instance was passed in. |
|---|
| 87 | | rel_obj = kwargs.pop(f.name) |
|---|
| 88 | | except KeyError: |
|---|
| 89 | | try: |
|---|
| 90 | | # Object instance wasn't passed in -- must be an ID. |
|---|
| 91 | | val = kwargs.pop(f.attname) |
|---|
| 92 | | except KeyError: |
|---|
| 93 | | val = f.get_default() |
|---|
| 94 | | else: |
|---|
| 95 | | # Object instance was passed in. |
|---|
| 96 | | # Special case: You can pass in "None" for related objects if it's allowed. |
|---|
| 97 | | if rel_obj is None and f.null: |
|---|
| 98 | | val = None |
|---|
| 99 | | else: |
|---|
| 100 | | try: |
|---|
| 101 | | val = getattr(rel_obj, f.rel.get_related_field().attname) |
|---|
| 102 | | except AttributeError: |
|---|
| 103 | | raise TypeError, "Invalid value: %r should be a %s instance, not a %s" % (f.name, f.rel.to, type(rel_obj)) |
|---|
| 104 | | setattr(self, f.attname, val) |
|---|
| 105 | | else: |
|---|
| 106 | | val = kwargs.pop(f.attname, f.get_default()) |
|---|
| 107 | | setattr(self, f.attname, val) |
|---|
| 108 | | if kwargs: |
|---|
| 109 | | raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] |
|---|
| | 108 | raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] |
|---|