Browse Source

adding new tags from student_page to backend

newsletter
Esther Kleinhenz 5 years ago
parent
commit
5a30a0adea
4 changed files with 37 additions and 12 deletions
  1. 9
    2
      application/forms.py
  2. 2
    2
      application/models.py
  3. 6
    0
      application/templates/student_page.html
  4. 20
    8
      application/views.py

+ 9
- 2
application/forms.py View File

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']

+ 2
- 2
application/models.py View File

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):

+ 6
- 0
application/templates/student_page.html View File

<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 %}

+ 20
- 8
application/views.py View File

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):

Loading…
Cancel
Save