Python Django从Createview获取PK
我正在创建一篇带有特定主键(pk)的博客文章。我的另一个函数需要将pk作为输入(请检查views.py)。我试图通过将post id作为对象id来获取它,尽管它表明该对象没有属性“id” 有没有办法把pk作为一个变量 谢谢, 特德Python Django从Createview获取PK,python,django,python-3.x,Python,Django,Python 3.x,我正在创建一篇带有特定主键(pk)的博客文章。我的另一个函数需要将pk作为输入(请检查views.py)。我试图通过将post id作为对象id来获取它,尽管它表明该对象没有属性“id” 有没有办法把pk作为一个变量 谢谢, 特德 您可以通过包装在表单中的实例获取对象。但只要对象未保存,它就没有主键 class PostCreateView(LoginRequiredMixin, CreateView): model = Post fields = ['first_name',
您可以通过包装在表单中的实例获取对象。但只要对象未保存,它就没有主键
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['first_name', 'last_name', 'titles' ,'title', 'content', 'billing']
def form_valid(self, form):
form.instance.author = self.request.user
response = super().form_valid(form)
pk = form.instance.pk
self.external(pk)
return response
类后创建视图(LoginRequiredMixin,CreateView):
型号=员额
字段=[“名字”、“姓氏”、“标题”、“标题”、“内容”、“账单”]
def表单_有效(自身、表单):
form.instance.author=self.request.user
response=super().form\u有效(form)
pk=form.instance.pk
自身外部(pk)
返回响应
Hi Willem,我收到以下错误:AttributeError at/post/new'PostCreateView'对象没有属性'instance'
,但是您的表单
不是PostCreateView
,它应该是您的模型。你确定你没有使用self.instance
?你是对的,我使用的是self.instance.pk
而不是pk=form.instance.pk
。虽然我仍然没有得到我所期望的。pk=form.instance.pk
的输出是None
@tatask:但在执行super()之前或之后。form\u有效(form)
。正如我在回答中所写的,只要表单没有保存(在super().form\u valid(form)
中发生),对象就没有主键。
#urls.py
from django.urls import path
from .views import PostListView, PostDetailView, PostCreateView, PostUpdateView, PostDeleteView
from . import views
urlpatterns = [
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('post/new', PostCreateView.as_view(), name='post-create'),
]
#views.py
from django.shortcuts import render
from django.views.generic import (
ListView,
DetailView,
CreateView,
UpdateView,
DeleteView
)
from .models import Post
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .latex import tex
from django.http import FileResponse, Http404
from django.urls import reverse
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['first_name', 'last_name', 'titles' ,'title', 'content', 'billing']
def form_valid(self, form):
form.instance.author = self.request.user # Use this to get the information from the form.
pk = self.object.id
self.external(pk)
return super().form_valid(form),
#Error which I am getting
'NoneType' object has no attribute 'id'
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['first_name', 'last_name', 'titles' ,'title', 'content', 'billing']
def form_valid(self, form):
form.instance.author = self.request.user
response = super().form_valid(form)
pk = form.instance.pk
self.external(pk)
return response