/ / Création de modèles extensibles personnalisés - django, django-models

Construction de modèles extensibles personnalisés - django, django-models

Dis que j'ai un modèle appelé client avec des informations de base telles que prénom, nom, email, etc. Si je souhaite que l'utilisateur puisse ajouter un autre champ personnalisé (rien que pour lui), dites valeur nette (un champ de texte). Cet utilisateur pourra désormais ajouter des informations sur la valeur nette à tous ses clients. Un autre utilisateur peut vouloir ajouter notes d'appel à tous ses clients.

Comment puis-je concevoir un modèle capable de gérer de tels ajouts personnalisés de différents utilisateurs? Et aussi, y a-t-il un nom spécifique pour ce que j'essaie de faire?

Mettre à jour:

Il y a plusieurs comptes et chaque compte aun ensemble de clients. Je pense utiliser le modèle ClientCharIndex pour garder une trace de tous les champs étendus et le modèle ClientCharAttribues pour stocker toutes les valeurs.

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()

Réponses:

1 pour la réponse № 1

Ce que vous pouvez faire est de définir un modèle avec uniquement des champs clé-valeur (et éventuellement de type) et d’avoir une relation M2M ou une clé étrangère avec client modèle.

Quelque chose comme ça:

class Client(Model):
...

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

Avec cela, vous pouvez ajouter n'importe quelle information clé-valeur à un objet client et à un nombre quelconque d'entre elles.