【问题标题】:Storing lists of words in database - best practice在数据库中存储单词列表 - 最佳实践
【发布时间】:2013-01-23 19:52:23
【问题描述】:

我正在网站上实施用户过滤系统。用户将能够选择他们感兴趣的“类别”和“包”,并在登录时显示匹配的数据。两组数据都来自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

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

【问题讨论】:

    标签: database django postgresql django-models


    【解决方案1】:

    我会使用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 替换用户配置文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 2011-03-23
      • 1970-01-01
      • 2011-03-31
      • 2018-07-27
      • 2012-04-28
      • 2015-10-16
      • 1970-01-01
      相关资源
      最近更新 更多