2013-02-15 45 views
0

如何鏈接用戶模型與分類模型。如何爲特定用戶添加條款以及如何檢索它們?如何將用戶模型與分類模型相鏈接?

我對Django相當陌生,因此您必須原諒我缺乏知識,並且沒有掌握特定的術語。

我有如下因素模型女巫擴展了基本用戶:

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    birthday = models.DateField(blank=True) 
    about_me = models.TextField(blank=True,null=True) 
    avatar = models.ForeignKey(Picture,blank=True, null=True) 
    class Meta: 
     db_table = 'auth_user_profile' 

我也有以下分類模型:

class TaxonomyGroup(models.Model): 
    related taxonomy items""" 
    name = models.CharField(max_length=25, db_index=True) 
    slug = AutoSlugField(populate_from='name', unique = True) 

    def __unicode__(self): 
     return u'%s' %self.name 

    class Meta: 
     db_table = 'taxonomies' 
     ordering = ['name'] 

class TaxonomyItem(models.Model): 
    taxonomy_group = models.ForeignKey(TaxonomyGroup, db_index=True) 
    name = models.CharField(max_length=55, db_index=True) 
    slug = AutoSlugField(populate_from='name', unique = True) 

    def __unicode__(self): 
     return u'%s' %self.name 

class TaxonomyMap(models.Model): 
    taxonomy_group = models.ForeignKey(TaxonomyGroup, db_index=True) 
    taxonomy_item = models.ForeignKey(TaxonomyItem, db_index=True) 
    content_type = models.ForeignKey(ContentType, db_index=True) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey('content_type','object_id') 

    objects = TaxonomyManager() 

    class Meta: 
     db_table = 'term2object' 
     unique_together = ('taxonomy_item', 'content_type', 'object_id') 
+0

在分類模型組 – catherine 2013-02-15 01:44:50

+0

爲什麼要創建用戶字段您是否需要'TaxonomyItem'模型中的'taxonomy_group'字段。這種關係不是已經被「TaxonomyMap」照顧過了嗎? – domino 2013-02-15 17:44:09

+0

我認爲你是對的,謝謝!我也會很快嘗試你的解決方案。 – 2013-02-16 00:31:28

回答

0

我看到它的方式,你要一個多TO-分類和用戶模型之間有許多關係,因此您可以將其添加到UserProfile模型。

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    birthday = models.DateField(blank=True) 
    about_me = models.TextField(blank=True,null=True) 
    avatar = models.ForeignKey(Picture,blank=True, null=True) 
    taxonomies = models.ManyToManyField(TaxonomyItem) 

然後,當你爲一個特定的用戶添加條款,你會做:

taxonomy = TaxonomyItem.objects.create(taxonomy_group=<some_group>, name=<some_name>,...) 
profile = user.get_profile() 
profile.taxonomies.add(taxonomy) 

檢索你可以做

profile.taxonomies.all() 
相關問題