如何动态创建,syncdb和访问django模型?

时间:2010-11-09 14:09:47

标签: django-models syncdb

我为费用应用程序

定义了费用模型
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 :(得分:0)

您想要的可能是使用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,并且它在文件中不是静态硬编码的。