Используя django-taggit, возможно ли ограничить теги предварительно утвержденными значениями? - PullRequest
3 голосов
/ 13 февраля 2011

У меня есть вопрос об использовании django-taggit. У меня есть UserProfile (который я прикрепляю, используя AUTH_PROFILE_MODULE в файле настроек), в котором я сохраняю набор навыков для преподавателей, таких как: они хотят и размещают теги для своего запроса. (Например, я хочу, чтобы преподаватель разбирался в исчислении и физике). Если я позволю пользователям сайта выбирать свои собственные теги, то я переживаю, что у нас может получиться «адский тег», где у нас есть такие теги, как и т. Д. Итак, я хочу пометить навыки, но только из таблицы, которая Я заполняю в админке по мере добавления людей. Это позволяет избежать проблемы диффузии (аналогично тому, как работает stackoverflow).

Вот несколько пробных кодов:

from django.db import models </br>
from django.contrib.auth.models import User
from taggit.managers import TaggableManager

class BaseUser(models.Model):
    class Meta:
        abstract=True
    first_name=models.CharField(max_length=100)
    skills=TaggableManager()

class UserProfile(BaseUser):
    user=models.ForeignKey(User,unique=True)

class TutoringSession(models.Model):
    title=models.CharField(max_length=100,blank=False)
    slug=models.SlugField(max_length=250,unique=True,blank=False,editable=False)
    tags=TaggableManager()

Или лучше использовать класс Tags:

class Tags:
     name=models.CharField(max_length=100, blank=False, unique=True)

и установить отношение ManyToMany к нему в TutoringSession и UserProfile?

Спасибо!

Должен отметить, что это связано с вопросом: Какие преимущества дает Django-Taggit по сравнению с простой реализацией тегов ManyToManyField ()?

за исключением того, что в этом примере мы могли бы захотеть ограничить набор разрешенных ответов красным и фиолетовым (который мы определили в таблице, потому что он может измениться)

1 Ответ

1 голос
/ 13 февраля 2011

Таким образом, вы хотите, чтобы набор предопределенных тегов и пользователи, а также сеансы TutoringSessions относились к одному или нескольким из этих тегов.Вот (насколько я вижу), для чего созданы m2m-поля.Возможно, у taggit есть некоторые преимущества юзабилити (я не знаком с ним), но описанная здесь функциональность может быть достигнута с помощью простых m2m-полей.

...