Как динамически создавать, синхронизировать и получать доступ к модели django? - PullRequest
0 голосов
/ 09 ноября 2010

Я определил модель расхода для приложения расхода,

class Expense(models.Model):
    pub_date = models.DateTimeField()
    amount = models.IntegerField()
    memo = models.TextField()

и я хотел бы создать потерянные отдельные таблицы для ведения данных для разных пользователей, например

james_expense_table for james 
william_expense_table for william
....
balabala_expense_table for balabala

Они точно такого же поведения, как параллельные объекты. Разница лишь в префиксе. Так что я могу легко расширить приложение с помощью дополнительных функций.

Так как мне этого добиться?

Я читал некоторые абстрактные модели из сети django. Но на самом деле они статические , жестко запрограммированы в файлах * .py, а не то, что я хочу.

И еще один вопрос, для статической модели (жесткий код в * .py файле), она может использовать команду manage.py syncdb для синхронизации полей модуля с полями таблицы, так как это можно сделать для динамической случай

1 Ответ

0 голосов
/ 09 ноября 2010

Возможно, вы захотите использовать ForeignKey, чтобы вы могли связать свою таблицу с разными пользователями:

class Expense(models.Model):
    pub_date = models.DateTimeField()
    amount = models.IntegerField()
    memo = models.TextField()
    user = models.ForeignKey(MyUserField)

Очевидно, вам нужно внедрить и импортировать MyUserField.

Вы можете получить доступ к пользователю из таблицы Expense

.
my_expense.user

Или таблица Expense от пользователя, использующая:

my_user.expense_set.all()

Тогда вам не требуется запускать syncdb для каждого нового пользователя, и он не является статически жестко запрограммированным в файле.

...