Python 将输入标签添加到文章中,并创建新的标签记录(如果它';数据库中的不存在
我有多对多关系的Python 将输入标签添加到文章中,并创建新的标签记录(如果它';数据库中的不存在,python,django,Python,Django,我有多对多关系的Tag和Article数据模型 class Tag(models.Model): owner = models.ForeignKey(User,on_delete=models.CASCADE) name = models.CharField(max_length=100) def __str__(self): return self.name class Meta: ordering = ("id",) clas
Tag
和Article
数据模型
class Tag(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Meta:
ordering = ("id",)
class Article(models.Model):
tags = models.ManyToManyField(Tag, blank=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
...
在接收表单输入的标签时,我首先检查标签是否存在,以确定是否在数据库中创建新标签,然后将所有输入标记附加到文章中
#save the new article in database
if article_form.is_valid():
article = article_form.save(commit=False)
article.owner = self.request.user
article.save()
#compare tags
input_tags = self.request.POST["tags"]
input_tags = tags.split(",")
query_tags = Tag.objects.all()
#get name list of tab objects
query_tags = [tag.name for tag in query_tags]
#create new tabs in TabTable
for tag in input_tags:
if tag not in query_tags:
Tag.objects.create(name=tag, owner=self.request.user)
tag_objs = []
for input_tag in input_tags:
try:
qualified_tab = Tab.object.filter(name=input_tag)[0]
tag_objs.append(qualified_tab)
article.tags.add(*tag_objs)
if article_form.is_valid():
article = article_form.save(commit=False)
article.owner = self.request.user
article.save()
# tag list
input_tags = self.request.POST["tags"]
input_tags = tags.split(",")
#create new tabs in TabTable
for tag in input_tags:
tag, created = Tag.objects.get_or_created(
name=tag,
defaults={"owner":self.request.user})
tag.article_set.add(article)
#article.tags.add(tag) test
测试注释系统测试激活状态