首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django views.py中将一个类对象的id传递给另一个类对象

如何在django views.py中将一个类对象的id传递给另一个类对象
EN

Stack Overflow用户
提问于 2019-08-24 04:43:57
回答 1查看 716关注 0票数 1

这是一个图书馆管理web应用程序,我需要从一个BookIssue对象中根据它的id来过滤一个特定的图书对象,并在我点击issue按钮时将其设置为ISSUED。

其中Post模型包含图书的详细信息,BookIssue模型包含图书馆成员借阅图书的详细信息。当我单击html中的Issue时,它将转到BookIssueView类,在views.py中,我需要将Post模型的issued字段的值更改为True

请参阅views.py中的post = Post.objects.filter(id=self.request.GET.get('id')).update(issued=True),我需要获取我根据其id选择的特定书籍。我如何实现它?

models.py

代码语言:javascript
复制
class Post(models.Model):
    title = models.CharField(max_length=100)
    book_author = models.CharField(default="",max_length=100)
    publisher = models.CharField(default="",max_length=100)
    content = models.TextField(max_length=200)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    issued = models.BooleanField(default=False)
    issued_to = models.CharField(default="",max_length=100,null=False)
    issue_to_phone_number = models.CharField(default="",max_length=10)


    def __str__(self):
        return [self.title,self.id]

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk' : self.pk})


class BookIssue(models.Model):
    issue_name = models.CharField(max_length=100,null=False)
    issue_email = models.EmailField(max_length=254)
    issue_phone_number = models.CharField(default="",max_length=10)
    issue_address = models.TextField(max_length=300)
    issued_book = models.ManyToManyField(Post,default="")


    def __str__(self):
        return self.issue_name

    def get_absolute_url(self):
        return reverse('blog-home')

views.py

代码语言:javascript
复制
class BookIssueView(LoginRequiredMixin,CreateView,Post):
    model = BookIssue
    fields = ['issue_name','issue_email','issue_phone_number','issue_address']
    def form_valid(self, form):
        post = Post.objects.filter(id=self.request.GET.get('id')).update(issued=True)
        form.instance.author = self.request.user
        return super().form_valid(form)

模板

bookissue_form.html

代码语言:javascript
复制
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
  <div class="content-section">

    <form method="post">
      {% csrf_token %}
      <fieldset class="form-group">
        <legend class="border-bottom mb-4">Issue Book</legend>
        {{ form|crispy }}
      </fieldset>
      <div class="form-group">
          <button class="btn btn-success" type="submit" name="button">Issue</button>
          <button class="btn btn-danger" type="submit" name="button">Cancel</button>
      </div>
    </form>
  </div>
{% endblock %}

urls.py

代码语言:javascript
复制
from django.urls import path
from . import views
from .views import (PostListView,
                    PostDetailView,
                    PostCreateView,
                    PostUpdateView,
                    PostDeleteView,
                    BookIssueView,
                    BookReturnView)

urlpatterns = [
    # path('',views.home, name='blog-home'),
    path('',PostListView.as_view(), name='blog-home'),
    path('post/<int:pk>/',PostDetailView.as_view(), name='post-detail'),
    path('post/new/',PostCreateView.as_view(), name='post-create'),
    path('post/<int:pk>/update/',PostUpdateView.as_view(), name='post-update'),
    path('post/<int:pk>/delete/',PostDeleteView.as_view(), name='post-delete'),
    path('post/<int:pk>/issue/',BookIssueView.as_view(), name='book-issue'),
    path('post/<int:pk>/return/',BookReturnView.as_view(), name='book-return'),
    path('about/',views.about, name='blog-about'),
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-24 06:29:55

id不在URL中,它在request.GETpk kwarg中。

而且,您似乎没有做任何将帖子与BookIssue相关联的事情。

代码语言:javascript
复制
post = Post.objects.get(id=self.kwargs["pk"])
post.issued=True
post.save()
response = super().form_valid(form)
form.instance.issued_book.add(post)
return response
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57632806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档