我在设置ForeignKey字段的初始值时遇到问题。我有一个CreateView
表单,我正在从bookdail视图访问它,该视图有url:path('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
我想在我的表单中输入/book/4
的初始值
在视图.py在
class BookInstanceCreate(PermissionRequiredMixin, CreateView):
model = BookInstance
fields = '__all__'
permission_required = 'catalog.can_mark_returned'
initial = {'book': BookInstance.book.id}
def get_success_url(self):
return reverse('book-detail', kwargs={'pk': self.object.book.pk})
我试图用:initial = {'book': BookInstance.book.id}
访问一本书,但遇到错误:initial={'book':图书实例.book.id}
AttributeError:“ForwardManyToOneDescriptor”对象没有属性“id”
这是我的模型.py公司名称:
^{pr2}$
让我们仔细看看
BookInstance.book.id
。在BookInstance
->;一个模型类book
->;该模型中的未填充字段(ForwardManyToOneDescriptor
,重点是Descriptor
)id
->;当我们使用Book.objects.first().id
时,django从数据库内部填充的字段因此,您试图从模型
class
而不是模型instance
获取book外键。在您可能希望在这里使用类似于set initial value in CreateView from ForeignKey (non-self.request.user)的内容。您可以从
get_initial
方法中访问request对象。在下面是它的样子:
无法从类名访问值
^{pr2}$它应该是那个类的对象。在
相关问题 更多 >
编程相关推荐