使用django-taggit,可以将标签限制为预先批准的值吗?
我有个关于使用django-taggit的问题。我有一个用户资料(UserProfile),我在设置文件中通过AUTH_PROFILE_MODULE来连接它。在这个用户资料里,我存储了一些导师的技能,比如数学、物理等等。然后,当有人想要请求辅导课程时,他们可以写下他们的需求描述,并为他们的请求添加标签。(例如,我想找一个擅长微积分和物理的导师)。如果我让网站的用户自己选择标签,我担心会出现“标签地狱”,也就是会有很多混乱的标签,比如数学、数学1、数学2等等。所以,我想要的标签技能,应该只从我在后台管理中填入的一个表格中选择。这样可以避免标签的混乱问题(类似于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()
或者,使用一个标签类会更好:
class Tags:
name=models.CharField(max_length=100, blank=False, unique=True)
然后在辅导课程和用户资料中建立一个多对多的关系?
谢谢!
我还要提到,这个问题和这个链接有关:Django-Taggit相比于简单的ManyToManyField()标签实现有什么好处?
在那个例子中,我们可能想限制允许的答案为红色和紫色(这些是我们在一个表格中定义的,因为它们可能会变化)。
1 个回答
1
所以你想要一组预定义的标签,并且用户和辅导课程都应该和这些标签有关系。根据我的理解,这正是多对多字段(m2m-fields)所设计的用途。也许taggit在使用上有一些优势(我不太了解它),但这里描述的功能其实可以通过简单的多对多字段来实现。