Created m2m field for Project

Created `programming_language` `ManyToManyField` for `Project`
This commit is contained in:
Kristofers Solo 2023-06-27 10:09:13 +00:00
parent 3cfe95d214
commit 726443ee52
3 changed files with 5 additions and 18 deletions

View File

@ -5,6 +5,7 @@ from django.db import models
from .license.models import License
from .operating_system.models import OperatingSystemVersion
from .programming_language.models import ProgrammingLanguage, ProjectProgrammingLanguage
from .tag.models import Tag
User = settings.AUTH_USER_MODEL
@ -18,6 +19,7 @@ class Project(models.Model):
license = models.ManyToManyField(License, blank=True)
tag = models.ManyToManyField(Tag, blank=True)
operating_system = models.ManyToManyField(OperatingSystemVersion, blank=True)
programming_language = models.ManyToManyField(ProgrammingLanguage, through=ProjectProgrammingLanguage, blank=True)
date_created = models.DateTimeField(auto_now_add=True)
@property

View File

@ -5,7 +5,7 @@ from . import views
urlpatterns = [
path("", views.index, name="index"),
path("add/", views.ProjectCreateView.as_view(), name="add-project"),
path("<str:username>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
path("<str:username>/<str:project_name>/update/", views.ProjectUpdateView.as_view(), name="project-update"),
path("<str:username>/<str:project_name>/delete/", views.ProjectDeleteView.as_view(), name="project-delete"),
path("<str:owner>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
path("<str:owner>/<str:project_name>/update/", views.ProjectUpdateView.as_view(), name="project-update"),
path("<str:owner>/<str:project_name>/delete/", views.ProjectDeleteView.as_view(), name="project-delete"),
]

View File

@ -1,15 +1,12 @@
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.db import transaction
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse_lazy
from django.views.generic import CreateView, DeleteView, DetailView, UpdateView
from .forms import ProjectForm
from .hosting_platform.forms import HostingPlatformForm
from .hosting_platform.models import ProjectHostingPlatform
from .models import Project
from .programming_language.forms import ProgrammingLanguageForm
from .programming_language.models import ProjectProgrammingLanguage
def index(request):
@ -64,10 +61,6 @@ class ProjectDetailView(DetailView):
slug_field = "name"
slug_url_kwarg = "project_name"
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(owner__username=self.kwargs.get("username"))
class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Project
@ -78,10 +71,6 @@ class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
login_url = "/login/"
redirect_field_name = "redirect_to"
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(owner__username=self.kwargs.get("username"))
def test_func(self):
return self.get_object().owner == self.request.user
@ -111,10 +100,6 @@ class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
redirect_field_name = "redirect_to"
success_url = "/"
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(owner__username=self.kwargs.get("username"))
def test_func(self):
return self.get_object().owner == self.request.user