как передать идентификатор модели, которая связана с другой моделью с внешним ключом в URL-адресе представления удаления в django framework - PullRequest
0 голосов
/ 07 мая 2020

У меня есть выпускники моделей, выпускной и выпускной проект

class Alumni(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.user)

class Graduation(models.Model):
    faculty = models.CharField(max_length=120)
    degree = models.CharField(max_length=120)
    yearOfGraduation = models.CharField(max_length=120)
    groupNumber = models.CharField(max_length=120)
    alumni = models.ForeignKey(Alumni, on_delete=models.CASCADE, related_name='graduation')

    def __str__(self):
        return str(self.faculty)

class GraduationProject(models.Model):
    title = models.CharField(max_length=120)
    description = models.TextField()
    mark = models.IntegerField(blank=True, null=True)
    gitLink = models.CharField(max_length=120)
    graduation = models.OneToOneField(
        Graduation,
        on_delete=models.CASCADE,
        primary_key=True, related_name='projects')
    def __str__(self):
        return str(self.title)

, и я сделал вид обновления и вид удаления выпускного и выпускного проекта

class GraduationUpdateView(UpdateView):
    model = Graduation
    template_name = "graduation_edit.html"
    fields = '__all__'

class GraduationDeleteView(DeleteView):
    model = Graduation
    template_name = "graduation_delete.html"
    success_url = reverse_lazy('AlumniList') 

class GraduationProjectUpdateView(UpdateView):
    model = GraduationProject
    template_name = "graduation_project_edit.html"
    fields = '__all__'

class GraduationProjectDeleteView(DeleteView):
    model = GraduationProject
    template_name = "graduation_project_delete.html"
    context_object_name = "project"
    success_url = reverse_lazy('AlumniList')

и в моем URL-адреса я написал их таким образом

    path('/<int:pk>/graduation/edit/', GraduationUpdateView.as_view(), name='editGraduation'),
    path('/<int:pk>/graduation/delete/', GraduationDeleteView.as_view(), name='deleteGraduation'),
    path('/<int:pk>/graduation/project/edit', GraduationProjectUpdateView.as_view(), 
    name='editProjGraduation'),
    path('/<int:pk>/graduation/project/delete', GraduationDeleteView.as_view(), 
    name='deleteProjGraduation'),

и в моих шаблонах, когда я передаю идентификатор пользователя, я не знаю, как передать также идентификатор указанного c проекта и указанного c окончание, он удаляет весь выпускной вместо дипломного проекта, вот как я его написал

<a href="{% url 'editGraduation' pk=graduation.pk %}" class="btn btn-primary">Edit Graduatopn</a>
 <a href="{% url 'deleteGraduation' pk=graduation.pk %}" class="btn btn-primary">Delete Graduation</a>
<a href="{% url 'editProjGraduation' pk=graduation.pk %}" class="btn btn-primary">Edit project</a>
            <a href="{% url 'deleteProjGraduation' pk=graduation.pk %}" class="btn btn-primary">Delete project</a>

все они находятся в подробном представлении выпускников, поэтому я использую для l oop для доступа все в объекте и он работает, но я не знаю, как передать также правильный идентификатор объекта, а не только пользователя, а также как сделать правильный get_absolute_url, чтобы получить правильный URL-адрес после создания нового выпуска или проекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...