0

我正在网站上实施用户过滤系统。用户将能够选择他们感兴趣的“类别”和“包”,并在登录时显示匹配的数据。两组数据都来自HTML 选择表单,例如。类别:“空指针”、“死代码”……以及包“package_x”、“package_y”、“package_z”……

我的问题是关于将此列表信息存储在数据库中的最佳方式(我使用的是 Django 和 PostgresSQL)。

我最初的想法是有一个这样的表:

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

有没有更好的方法来做到这一点?

4

1 回答 1

1

我会使用具有多对多字段的类别和包的用户配置文件。

在模型.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 将使用可配置的用户模型替换用户配置文件。

于 2013-01-24T20:03:56.077 回答