2013-01-23 152 views
0

我在網站上實施用戶過濾系統。用戶應能夠選擇他們感興趣的'類別'和'包',並在登錄時提供匹配的數據。這兩組數據將來自HTML select forms,例如。分類:'空指針','死代碼'...和包'package_x','package_y','package_z'...在數據庫中存儲單詞列表 - 最佳實踐

我的問題是關於將這個列表信息存儲在數據庫中的最佳方式我正在使用Django和PostgresSQL)。

我最初的想法是有這樣的一個表:

user_id - one to one field 
categories - textfield - store json data 
packages - textfield - store json data 

有沒有更好的方式來這樣做呢?

回答

0

我會走的路線使用user profile與許多領域的類別和包。

在models.py

from django.contrib.auth.models import User 

class Category(models.Model): 
    name = models.CharField(max_length=255) 

class Package(models.Model): 
    name = models.CharField(max_length=255) 

class UserProfile(models.Model): 
    user = models.ForiegnKey(User) 

    categories = models.ManyToManyField(Category) 
    packages = models.ManyToManyField(Package) 

在admin.py

from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class CustomUserAdmin(UserAdmin):  
    inlines = [UserProfile] 
    #filter_horizontal = ('',) #Makes the selection a bit more friendly 

admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 

在views.py

user_with_profile = User.objects.get(pk=user_id).get_profile() 

之所以這麼說。 Django 1.5將能夠使用configurable user model替換用戶配置文件。