from django import forms | from django import forms | ||||
from .models import Post, CustomUser | from .models import Post, CustomUser | ||||
from taggit.forms import * | |||||
from django.contrib.auth.forms import UserCreationForm, UserChangeForm | |||||
class PostForm(forms.ModelForm): | class PostForm(forms.ModelForm): | ||||
published_date = forms.DateField(widget=forms.widgets.DateInput(format="%d. %h %Y, %M:%S")) | |||||
class Meta: | class Meta: | ||||
model = Post | model = Post | ||||
fields = ('title', 'text', 'published_date', 'tags') | |||||
fields = ('title', 'text', 'published_date', 'tags') | |||||
class NewTagForm(forms.ModelForm): | |||||
m_tags = TagField() | |||||
class Meta: | |||||
model = CustomUser | |||||
fields = ['m_tags'] |
from taggit.managers import TaggableManager | from taggit.managers import TaggableManager | ||||
class CustomUser(models.Model): | class CustomUser(models.Model): | ||||
user = models.OneToOneField(User, on_delete=models.CASCADE) | |||||
mytags = TaggableManager() | |||||
user = models.OneToOneField(User, null = True, on_delete=models.CASCADE) | |||||
tags = TaggableManager() | |||||
class Post(models.Model): | class Post(models.Model): |
<table class="table table-striped table-bordered table-hover"> | <table class="table table-striped table-bordered table-hover"> | ||||
</table> | </table> | ||||
</div> | </div> | ||||
<form class="post-form" method="post"> | |||||
{% csrf_token %} | |||||
{{form.as_p}} | |||||
<button type="submit" class="save btn btn-outline-dark">Save</button> | |||||
</form> | |||||
{% endblock %} | {% endblock %} |
from django.shortcuts import render, get_object_or_404 | from django.shortcuts import render, get_object_or_404 | ||||
from django.utils import timezone | from django.utils import timezone | ||||
from .models import Post | |||||
from .forms import PostForm | |||||
from .models import Post, CustomUser | |||||
from .forms import PostForm, NewTagForm | |||||
from django.shortcuts import redirect | from django.shortcuts import redirect | ||||
from django.contrib.auth.decorators import login_required | from django.contrib.auth.decorators import login_required | ||||
from django.contrib.admin.views.decorators import staff_member_required | from django.contrib.admin.views.decorators import staff_member_required | ||||
@login_required | @login_required | ||||
def student_page(request): | def student_page(request): | ||||
q = request.GET.get('q') | |||||
query = Q() | |||||
for word in q or []: | |||||
query = query | Q(tags__name__icontains=word) | |||||
result = Post.objects.filter(query) | |||||
return render(request, 'blog_search_list_view.html', {'result':result}) | |||||
user_instance = CustomUser.objects.get(user=request.user) | |||||
if request.method == "POST": | |||||
form = NewTagForm(request.POST, instance=user_instance) | |||||
if form.is_valid(): | |||||
obj = form.save(commit=False) | |||||
obj.user = request.user | |||||
obj.save() | |||||
m_tags = form.cleaned_data['m_tags'] | |||||
obj.tags.add(*m_tags) | |||||
form.save_m2m() | |||||
return redirect('/student/') | |||||
else: | |||||
form = NewTagForm() | |||||
return render(request, 'student_page.html', {'form':form}) | |||||
class TagSearch(TagCanvasListView): | class TagSearch(TagCanvasListView): |