class AbstractDataModel(models.Model):
xxx
class Meta:
abstract = True
def __iter__(self):
return iter([self.xxx, self.yyy, self.zzz, self.aaa,
self.qqq, self.mode_bbb])
class DataModel(AbstractDataModel):
pass
class DataModelArchive(AbstractDataModel):
# https://stackoverflow.com/questions/21699707/python-how-to-copy-all-attibutes-from-base-class-to-derived-one
def __init__(self, source=None):
if source is not None:
self.__dict__.update(source.__dict__)
But when I want to access data in DataModelArchive, like DataModelArchive.objects.all() for example,
I get
Traceback (most recent call last):
File "/home/.../tests.py", line 1090, in test_archive
print(DataModelArchive.objects.all())
File "/home/.../venv/lib/python3.6/site-packages/django/db/models/query.py", line 248, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/home/.../venv/lib/python3.6/site-packages/django/db/models/query.py", line 272, in __iter__
self._fetch_all()
File "/home/.../venv/lib/python3.6/site-packages/django/db/models/query.py", line 1179, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/home/.../venv/lib/python3.6/site-packages/django/db/models/query.py", line 63, in __iter__
obj = model_cls.from_db(db, init_list, row[model_fields_start:model_fields_end])
File "/home/.../lib/python3.6/site-packages/django/db/models/base.py", line 507, in from_db
new = cls(*values)
TypeError: __init__() takes from 1 to 2 positional arguments but 11 were given
What am I doing wrong ?
Thx;-)
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ac3a7a8f-f878-48b3-943a-eb47f6b03e7e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
__init__() takes from 1 to 2 positional arguments but 11 were given
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ac3a7a8f-f878-48b3-943a-eb47f6b03e7e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
class AbstractDataModel(models.Model):
xxx
class Meta:
abstract = True
def __iter__(self):
return iter([self.xxx, self.yyy, self.zzz, self.aaa,
self.qqq, self.mode_bbb])
class DataModel(AbstractDataModel):
pass
class DataModelArchive(AbstractDataModel):
# https://stackoverflow.com/questions/21699707/python-how-to-copy-all-attibutes-from-base-class-to-derived-one
def __init__(self, source=None):
if source is not None:
self.__dict__.update(source.__dict__)
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ac3a7a8f-f878-48b3-943a-eb47f6b03e7e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/gHKY0BAcTi4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMv51WTXNjz1Px76v5_7P%2BMmUnbHH8Yw%2BdwJPR%2BX7ccorHPZBA%40mail.gmail.com.
# https://stackoverflow.com/questions/21699707/python-how-to-copy-all-attibutes-from-base-class-to-derived-one
--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/gHKY0BAcTi4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAEM7gE2y%3DQHEJdbwUMbhmxDnY8%2BEHSVdUKUJtgbGTX2UgoWKSA%40mail.gmail.com.
On vrijdag 29 juni 2018 09:44:40 CEST Mickael Barbo wrote:
> I try to create a way to archive (copy) the same object instance on an
> other DataBase.
>
> I followed this advice : # https://stackoverflow.com/
> questions/21699707/python-how-to-copy-all-attibutes-from-
> base-class-to-derived-one
That advice is for normal python classes. Django models have some restrictions, one being that fields are special attributes. Messing with a model's __init__() is not something you normally do as a model's class creation is highly customized.
If you're really using 2 different databases, a model's save() operation supports a `using` keyword that allows you to select the database connection. Archiving becomes really easy that way.
--
Melvyn Sopacua