/ / Budowanie niestandardowych, rozszerzalnych modeli - django, django-models

Budowanie niestandardowych modeli rozszerzalnych - django, django-models

Powiedz, że mam model o nazwie klient z podstawowymi informacjami, takimi jak imię, nazwisko, adres e-mail itp. Jeśli chcę, aby użytkownik mógł dodać inne niestandardowe pole (tylko dla niego), powiedz wartość netto (pole tekstowe). Ten użytkownik będzie teraz mógł dodawać informacje o wartości netto do wszystkich swoich klientów. Inny użytkownik może chcieć dodać notatki połączeń do wszystkich jego klientów.

Jak mam projektować model, który może obsłużyć takie niestandardowe dodatki od różnych użytkowników? A także, czy istnieje konkretna nazwa tego, co próbuję zrobić?

Aktualizacja:

Istnieje wiele kont i każde konto mazestaw klientów. Zastanawiam się nad wykorzystaniem modelu ClientCharIndex do śledzenia wszystkich rozszerzonych pól i modelu ClientCharAttribues w celu przechowywania wszystkich wartości.

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

Odpowiedzi:

1 dla odpowiedzi № 1

To, co możesz zrobić, to zdefiniować model z tylko polami klucz-wartość (i może to być typ) i mieć relację M2M lub klucza obcego z client Model.

Coś takiego:

class Client(Model):
...

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

Dzięki temu można dodać dowolną parę klucz-wartość do obiektu klienta i dowolną ich liczbę.