2013-01-23 2 views
0

웹 사이트에 사용자 필터 시스템을 구현하고 있습니다. 사용자는 관심있는 '카테고리'및 '패키지'를 선택하고 로그인 할 때 일치하는 데이터를 표시 할 수 있어야합니다. 두 데이터 세트는 모두 HTML select forms에서옵니다. 'null 포인터', '죽은 코드'및 패키지 '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을 사용하는 경로를 선택했습니다. views.py

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

에서 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) 

에서 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) 

에서

이 모든 것은 상기되어있다. Django 1.5는 사용자 프로필을 configurable user model으로 바꿀 것입니다.

관련 문제