Jetzt habe ich diesen Code:Ist es möglich, Namen von Modellfeldern dynamisch zu definieren?
class Mymodel(models.Model):
xxxx_count = ForeignCountField(filter={'foreign_table__xxxx': True})
yyyy_count = ForeignCountField(filter={'foreign_table__yyyy': True})
zzzz_count = ForeignCountField(filter={'foreign_table__zzzz': True})
qqqq_count = ForeignCountField(filter={'foreign_table__qqqq': True})
ssss_count = ForeignCountField(filter={'foreign_table__ssss': True})
rrrr_count = ForeignCountField(filter={'foreign_table__rrrr': True})
ich so etwas wie dies will:
class Mymodel(models.Model):
for code in ['xxxx','yyyy','zzzz','qqqq','ssss','rrrr']:
setattr(self, '%s_count' % code, ForeignCountField(filter={'foreign_table__%s' % code: True}))
Aber wenn ich versuche, dies zu tun, Fehler ausgelöst: „Selbst nicht ist definiert“. Muss ich diesen Code an einen anderen Ort bringen?
Sehr guter Punkt, ich habe diesen Ansatz vergessen (es ist so lange her, seit ich es gebraucht habe, seit Django eine abstrakte Modellvererbung bekommen hat). Dies ist wahrscheinlich eine bessere Lösung als das Schreiben einer Metaklasse. –
Ja, das funktioniert gut. Nur eine schlechte Sache, dass die Definition dieses Feldes an 2 verschiedenen Stellen im Code liegt: innerhalb und außerhalb der Klasse. – ramusus