0

考虑我的模板:

entry_detail.html

<form class="navbar-form navbar-right" action="." method="get">
    <!-- add -->
    <!-- <p name="filter_link" class="pull-right"><a href="">Produtos em baixo estoque</a></p> -->
    <a name="new_customer" href="{% url 'proposal_list' %}">
        <button type="button" class="btn btn-primary">
            <span class="glyphicon glyphicon-plus"></span> Criar Orçamento
        </button>
    </a>
</form>

并考虑我的观点:

视图.py

class EntryDetail(DetailView):
    template_name = 'core/entry/entry_detail.html'
    model = Entry

    def create_proposal(self, employee_pk=8):
        if 'new_customer' in self.request.GET:
            employee = Employee.objects.get(pk=employee_pk)
            num_last_proposal = NumLastProposal.objects.get(
                pk=1)  # sempre pk=1
            entry = Entry.objects.get(pk=self.request.GET[self.id])
            obj = Proposal(
                num_prop=num_last_proposal.num_last_prop + 1,
                type_prop='R',
                category=entry.category,
                description=entry.description,
                work=entry.work,
                person=entry.person,
                employee=employee,
                seller=entry.seller,
            )
            obj.save()

            entry.is_entry = True
            entry.save()

            num_last_proposal.num_last_prop += 1
            num_last_proposal.save()

问题:如何使这个工作。如何在 DetailView 中获取 entry.pk 以用于

entry = Entry.objects.get(pk=self.request.GET[self.id])

在 manage.py shell 中它的工作

shell_create_proposal.py

from core.models import Entry, Proposal, Employee, NumLastProposal

employee = Employee.objects.get(pk=8)
num_last_proposal = NumLastProposal.objects.get(pk=1)
entry = Entry.objects.get(pk=1)
obj = Proposal(
    num_prop=num_last_proposal.num_last_prop + 1,
    type_prop='R',
    category=entry.category,
    description=entry.description,
    work=entry.work,
    person=entry.person,
    employee=employee,
    seller=entry.seller,
)
obj.save()

entry.is_entry = True
entry.save()

num_last_proposal.num_last_prop = num_last_proposal.num_last_prop + 1
num_last_proposal.save()
4

1 回答 1

0

在 url 中指定 pk,详细视图应该为您处理它

url(r'^yourview/(?P<pk>\d+)/' , YourDetailView.as_view() , name='your_view_name' ),

看看这里的 get_object 方法:

http://ccbv.co.uk/projects/Django/1.8/django.views.generic.detail/Det​​ailView/

它得到的pk如下:

pk = self.kwargs.get(self.pk_url_kwarg, None) 
于 2015-07-11T10:39:27.333 回答