![](/img/trans.png)
[英]How to save tag in django to my model using django-taggit
[英]In django-taggit tag is not save along with question post
当我创建 djanog 问题模型时,所有字段都已创建,但未使用问题 model 创建标签,但在 django 管理员 taggit 中分别创建标签
model.py
class Question(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True,primary_key=True,editable=False)
nameuser = models.ForeignKey(Profile,on_delete=models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)
content = RichTextUploadingField()
tag = TaggableManager()
def __str__(self):
return self.content
class Meta:
ordering = ['-timestamp']
视图.py
def createQue(request):
User = request.user.profile
form=QuestionForm()
if request.method =='POST':
form=QuestionForm(request.POST,request.FILES)
if form.is_valid():
content = form.cleaned_data["content"]
tag = form.cleaned_data["tag"]
print(tag)
blog = form.save(commit=False)
blog.nameuser=User
blog.content = content
blog.tag=tag
blog.save()
return redirect('home')
context={'form':form}
return render(request,'blog_form.html',context)
forms.py
class QuestionForm(forms.ModelForm):
class Meta:
model = Question
fields = ['content','tag']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['content'].widget.attrs.update({'class':'form-control ','placeholder':'Enter your question'})
self.fields['tag'].widget.attrs.update({'class':'tag_inputbar','placeholder':'Enter Tags here'})
TaggableManager
是一个带有一些额外逻辑的ManyToManyField
。 因此,您应该这样保存它,或者只是让表单正常工作,所以:
def createQue(request):
form=QuestionForm()
if request.method =='POST':
form = QuestionForm(request.POST, request.FILES)
if form.is_valid():
form.instance.nameuser = request.user.profile
form.save()
return redirect('home')
context={'form':form}
return render(request, 'blog_form.html', context)
对于 many2many,如果使用commit=False
,则需要使用save_m2m()
和 form
def createQue(request):
User = request.user.profile
form=QuestionForm()
if request.method =='POST':
form=QuestionForm(request.POST,request.FILES)
if form.is_valid():
content = form.cleaned_data["content"]
blog = form.save(commit=False)
blog.nameuser=User
blog.content = content
blog.save()
form.save_m2m()
return redirect('home')
context={'form':form}
return render(request,'blog_form.html',context)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.