Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django CBV CreateView-从CreateView重定向到最后一页_Django_Django Forms_Django Views - Fatal编程技术网

Django CBV CreateView-从CreateView重定向到最后一页

Django CBV CreateView-从CreateView重定向到最后一页,django,django-forms,django-views,Django,Django Forms,Django Views,我正在学习Django,从CreateView重定向回时遇到问题。我想重定向到BookDetail页面,该页面包含CreateView创建的BookInstance列表。 models.py: class BookInstance(models.Model): """Model representing a specific copy of a book (i.e. that can be borrowed from the library).""" id = models.UU

我正在学习Django,从CreateView重定向回时遇到问题。我想重定向到BookDetail页面,该页面包含CreateView创建的BookInstance列表。 models.py:

class BookInstance(models.Model):
    """Model representing a specific copy of a book (i.e. that can be borrowed from the library)."""
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text='Unique ID for this particular book across whole library')
    book = models.ForeignKey('Book', on_delete=models.SET_NULL, null=True) 
    imprint = models.CharField(max_length=200)
    due_back = models.DateField(null=True, blank=True)
    borrower = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
    LOAN_STATUS = (
        ('m', 'Maintenance'),
        ('o', 'On loan'),
        ('a', 'Available'),
        ('r', 'Reserved'),
    )

    status = models.CharField(
        max_length=1,
        choices=LOAN_STATUS,
        blank=True,
        default='m',
        help_text='Book availability',
    )


    class Meta:
        ordering = ['due_back']
        permissions = (("can_mark_returned", "Set book as returned"),)  

    def __str__(self):
        """String for representing the Model object."""
        return f'{self.id} ({self.book.title})'

    @property
    def is_overdue(self):
        if self.due_back and date.today() > self.due_back:
            return True
        return False
views.py

class BookInstanceCreate(PermissionRequiredMixin, CreateView):
    model = BookInstance
    fields = '__all__'
    permission_required = 'catalog.can_mark_returned'
    initial = {'Book': Book}
    success_url = reverse_lazy('book-detail')
url.py

urlpatterns += [
    path('book/create/instance', views.BookInstanceCreate.as_view(), name='book_create_instance'),
    path('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
]
但这似乎对我不起作用。有人能告诉我如何编辑视图,使其在提交表单后重定向吗

编辑:有我的模板代码:

{% extends "base_generic.html" %}

{% block content %}
  <form action="" method="post">
    {% csrf_token %}
    <table>
    {{ form.as_table }}
    </table>
    <input type="submit" value="Submit" class='btn btn-dark'>
    <input type="hidden" name="next" value="{{ request.path }}">
  </form>
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_table}}
{%endblock%}

您需要定义
get\u success\u url
方法,而不是静态
success\u url
属性:

class BookInstanceCreate(PermissionRequiredMixin, CreateView):
    ...
    def get_success_url(self):
        return reverse('book-detail', kwargs={'pk': self.object.pk})

您需要定义
get\u success\u url
方法,而不是静态
success\u url
属性:

class BookInstanceCreate(PermissionRequiredMixin, CreateView):
    ...
    def get_success_url(self):
        return reverse('book-detail', kwargs={'pk': self.object.pk})

如何访问此详细信息视图的主键?我使用了:类BookInstanceCreate(PermissionRequiredMixin,CreateView):model=BookInstance字段='all'permission\u required='catalog.can\u标记_返回的'initial={'Book':Book}def get_success\u url(self):return reverse('Book-detail',kwargs={'pk:self.Book.pk})现在我有一个错误:AttributeError at/catalog/book/create/instance'BookInstanceCreate'对象没有属性'book',它应该是
self.object.pk
。仍然有错误:“book detail”与关键字参数“{'pk'”:UUID('25f6ba52-2b6e-45cd-859d-dcc4e79f30ec')相反。尝试了1个模式:[“catalog/book/(?P[0-9]+)$”]
我认为问题在于我正在添加一个BookInstance,并希望重定向回书籍详细信息页面,而不是BookInstance。我想访问的“PK”在Book(model)>get_absolute_url中。等等,Book和BookInstance一样吗?我对那里的UUID感到困惑,你得到错误的原因是你的URL需要一个数字id而不是UUID。我解决了这个问题,我不得不使用:
self.object.book.pk
,因为book是bookinstance的外键,self.object.pk从bookinstance模型中获取
id
。谢谢你的帮助,在我发布之前,我在这上面浪费了几个小时。我如何访问此详细信息视图的主键?我使用了:类BookInstanceCreate(PermissionRequiredMixin,CreateView):model=BookInstance字段='all'permission\u required='catalog.can\u标记_返回的'initial={'Book':Book}def get_success\u url(self):return reverse('Book-detail',kwargs={'pk:self.Book.pk})现在我有一个错误:AttributeError at/catalog/book/create/instance'BookInstanceCreate'对象没有属性'book',它应该是
self.object.pk
。仍然有错误:“book detail”与关键字参数“{'pk'”:UUID('25f6ba52-2b6e-45cd-859d-dcc4e79f30ec')相反。尝试了1个模式:[“catalog/book/(?P[0-9]+)$”]
我认为问题在于我正在添加一个BookInstance,并希望重定向回书籍详细信息页面,而不是BookInstance。我想访问的“PK”在Book(model)>get_absolute_url中。等等,Book和BookInstance一样吗?我对那里的UUID感到困惑,你得到错误的原因是你的URL需要一个数字id而不是UUID。我解决了这个问题,我不得不使用:
self.object.book.pk
,因为book是bookinstance的外键,self.object.pk从bookinstance模型中获取
id
。谢谢你的帮助,在我发布之前,我在这上面浪费了几个小时。