0

User モデルを Taxonomy モデルにリンクするにはどうすればよいですか。特定のユーザーの条件を追加するにはどうすればよいですか? また、それらを取得するにはどうすればよいですか?

私は 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')
4

1 に答える 1

0

私の見方では、分類法とユーザー モデルの間に多対多の関係が必要なので、それを 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()
于 2013-02-15T17:37:51.333 に答える