Seite 1 von 1

models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 18:30
von snoer
moin.

ich möchte ein model in ein anderes model konvertieren.
beide models haben die selben felder.

Code: Alles auswählen

class Model_Base(
	name = models.CharField('name', max_length=50)
	[...]
	class Meta:
		abstract = True

class Model1(Model_Base):	
	def __unicode__(self):
		return self.name

class Model2(Model_Base):	
	def __unicode__(self):
		return self.name
Model1 kann über eine ModelForm erstellt und bearbeitet werden.

nun war meine idee eine ModelForm aus Model2 zu erzeugen, diese mit einer instanz von Model1 zu befüllen, und die ModelForm2 abzuspeichern.
dabei soll dann ein Model2 rauskommen, das die werte vom Model1 hat.

tuts aber nicht ":)
es kommt wieder ein Model1 dabei raus.
EDIT:
das lag aber daran, dass ich instance=model1 gesetzt hatte. wenn ich aber einfach nur ModelForm2(model1) aufrufe bekomme ich einen fehler:
Caught AttributeError while rendering: Model1 object has no attribute 'get'
---


wie kann ich also aus Model1 ein Model2 erzeugen? kann mir mal jemand das hirn entknoten?

kann ich vielleicht einfach model.__class__ verändern? und dann erneut abspeichern?
wozu ist die obj._meta.contribute_to_class methode gut? vielleicht genau für so etwas?

Re: models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 22:49
von Dauerbaustelle
Das hört sich alles ziemlich arg komisch an... wieso willst du das überhaupt tun? Ich bin mir sicher, dass es einen eleganteren Lösungsansatz für dein Problem gibt :-)

Re: models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 22:57
von snoer
ich hab auch langsam das gefühl x)

es geht darum, dass die datensätze verschiedene "stadien" durchlaufen. auf die unterschiedlichen tabellen werden dann unterschiedliche aktionen angewandt.
anfangs hatte ich nur ein model mit einem zusätzlichen feld in dem der status stand. ein freund der sich besser mit der materie auskennt als ich sagte aber,
dass es nicht gut ist, wenn sich eine tabelle so aufbläht. das schien mir plausibel.

ich weiss ja nicht wie genau eine datenbank arbeitet, aber ich fand es sehr einleuchtend, dass es besser ist ohne großes abfragen von feldern die aktionen
einfach auf alle einträge in der entsprechenden db zu machen.

zb soll ein bild hochgeladen werden (stadium1) dann durch einen mod aktiviert werden (stadium2) beim aktivieren wird das bild gescaled und so dann soll das bild irgendwann expiren (stadium3)
und dann halt gelöscht werden.

vielleicht war der ursprüngliche ansatz doch der bessere? ":>

Re: models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 23:07
von Dauerbaustelle
Also ich würde da schon den Ansatz mit dem Status verwenden. Ist viel einfacher und unkomplizierter als Daten-Rumschieben zwischen Tabellen.

Re: models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 23:10
von snoer
ich hab mich halt drauf verlassen, was mir gesagt wurde.

weisst du wie das datenbankintern so abläuft?

einfacher ist ja nicht immer pauschal besser :)

Re: models aus models erzeugen

Verfasst: Freitag 27. Mai 2011, 23:16
von Dauerbaustelle
snoer hat geschrieben:weisst du wie das datenbankintern so abläuft?
was?
einfacher ist ja nicht immer pauschal besser :)
beim Programmieren fast immer.

Re: models aus models erzeugen

Verfasst: Samstag 28. Mai 2011, 01:35
von snoer
naja... mich würde halt interessieren (aber da muss ich wohl einfach mal n bisschen was lesen) was performanter ist.
aber um das ernsthaft beurteilen zu können, muss man wohl wissen wie genau in der datenbank die abfrage gehandelt wird
und wieviele ressourcen das verbraucht.

vielleicht mal was für kalte wintermonate ;)

danke jedenfalls für deine meinung!

unabhängig davon interessiert mich aber weiterhin, wie ihr oben bechriebenes problem lösen würdet.