/ / Erstellen von benutzerdefinierten erweiterbaren Modellen - django, django-models

Erstellen von benutzerdefinierten erweiterbaren Modellen - django, django-models

Sagen wir, ich habe ein Model angerufen Klient mit grundlegenden Informationen wie Vorname, Nachname, E-Mail usw. Wenn ich möchte, dass der Benutzer ein anderes benutzerdefiniertes Feld (nur für ihn) hinzufügen kann, sagen Reinvermögen (ein Textfeld) Dieser Benutzer wird nun in der Lage sein, allen seinen Kunden Informationen zum Nettowert hinzuzufügen. Ein anderer Benutzer möchte möglicherweise hinzufügen Notizen aufrufen an alle seine Kunden.

Wie gehe ich vor, um ein Modell zu entwerfen, das solche benutzerdefinierten Zusätze von verschiedenen Benutzern verarbeiten kann? Und gibt es auch einen spezifischen Namen für das, was ich versuche zu tun?

Aktualisieren:

Es gibt mehrere Konten und jedes Konto hateine Reihe von Kunden. Ich denke daran, das ClientCharIndex-Modell zu verwenden, um alle erweiterten Felder zu verfolgen, und das ClientCharAttribues-Modell, um alle Werte zu speichern.

class Client(Model):
account = models.ForeignKey(Account)
first_name = Model.CharField()
last_name = Model.CharField()
...

class ClientCharIndex(Model):
account = models.ForeignKey(Account)
name = Model.CharField()

class ClientCharAttribues(Model):
key = models.ForeignKey(ClientCharIndex)
client = models.ForeignKey(Client)
value = Model.CharField()

Antworten:

1 für die Antwort № 1

Was Sie tun könnten, ist ein Modell mit nur Schlüssel-Wert-Feldern zu definieren (und kann Typ sein) und haben M2M oder Fremdschlüssel-Beziehung mit client Modell.

Etwas wie das:

class Client(Model):
...

class UserAttribues(Model):
key = Model.CharField()
value = Model.CharField()
client = Model.ManyToManyField(Client)

Damit können Sie einem Client-Objekt beliebige Schlüsselwertinformationen und beliebig viele davon hinzufügen.