2015-04-25 39 views
0

我嘗試建立一個模型,例如Userprofile,其中將在管理面板中選擇字段。Django的:model.ForeignKey指字段類型

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    regfield = models.ForeignKey(Regfields) 

這種模式指的是第二種模式Regfields

class Regfields(models.Model): 
    field_name = models.CharField(max_length = 256, unique=True, blank=False) 
    field_type = models.ForeignKey(FOREIGNKEY_TO_DATATYPES) 

我想選擇字段名和字段類型(如Char_field ...)在第二個模型Userprofile利用這一點,來指到Regfields模型中的字段名稱和字段類型。什麼是最好的方法來實現這一點?

編輯:

我不求有用戶配置文件一種動態的數據庫。我想我可以通過使用一個「靜態」的選擇列表achive這樣的事情,如:

FIELD_TYPE_CHOICES = (
    (BigIntegerField,'Long Int'), 
    (BooleanField,'Boolean'), 
    (CharField,'Char'), 
    ... 
    ) 
field_type = models.CharField(max_length=20, choices=FIELD_TYPE_CHOICES, default=CharField) 

然而,這樣我可以有所需的註冊場從一組給定choosen,但我只得到字段類型作爲字符串,這反過來可能導致複雜的數據驗證。

我嘗試實現的示例: 在管理面板中,我希望管理員讓他們選擇在註冊頁面需要什麼類型的數據(除了用戶名和密碼)。管理員可能會問了(用戶名,密碼和電子郵件),而且還可能會要求(用戶名,密碼,電子郵件,名字,姓氏,公司,部門)

+2

因爲默認的Django模型字段必須存儲在數據庫中的結構,你不能簡單地具有動態字段類型,如果這是你想要達到的目標。 –

+0

您能否提供一個或兩個您希望以這種方式創建的用戶配置文件的具體示例? – sthzg

回答

1

允許用戶通過表單定製形式不是那麼簡單,並且可能會將您拖入更多非標準問題......嘗試使用現成的django包來幫助構建表單?

https://www.djangopackages.com/grids/g/form-builder/

+1

我想django-fobi似乎在靈活性和複雜性方面有着最佳的折中。謝謝! – pritstift