我有一个django项目,在我的一个模板中有一个带有两个按钮的表单。这些按钮接受或拒绝“优惠”,这是我的模特之一。我将模板的POST请求传递给我有两个函数的视图。如何使这些批准和拒绝按钮更新模型中的“approved_by_x”值?
模板:
<form method="post" class="login-container" action="{% url 'accept_booking' %}">
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="Accept" name="Accept"/>
<input type="hidden" name="offer" value="{{ offer }}" />
</form>
<form method="post" class="login-container" action="{% url 'decline_booking' %}">
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="Decline" name="Decline" />
<input type="hidden" name="offer" value="{{ offer }}" />
</form>
观点:
def accept_booking(pr):
offer = pr.POST.get("offer")
print(offer)
def decline_booking(pr):
offer = pr.POST.get("offer")
print(offer
模特:
class BookingOffer(models.Model):
artist = models.ForeignKey(Artist, null=True, related_name='artist')
artist_manager = models.ForeignKey(User, default=1, limit_choices_to=
{'groups__name': 'artist_manager'})
comment = models.TextField(max_length=120, blank=True)
time_slot = models.ForeignKey('TimeSlot', null=True, blank=True)
price = models.IntegerField(null=True, blank=True)
tech_needs = models.TextField(blank=True)
approved_by_bm = models.BooleanField(default=False)
accepted_by_am = models.BooleanField(default=False)
答案 0 :(得分:1)
假设模板中的{{ offer }}
包含BookingOffer
ID:
from django.shortcuts import get_object_or_404, redirect
from django.http import HttpResponseNotFound
def accept_booking(request):
if request.method == 'POST':
offer_id = request.POST.get('offer', None)
offer = get_object_or_404(BookingOffer, pk=offer_id)
offer.approved_by_bm = True
offer.save()
return redirect('some-url')
return HttpResponseNotFound('<h1>Page not found</h1>')
或使用基于类的视图:
from django.shortcuts import get_object_or_404, redirect
from django.views.generic import View
class AcceptBookingView(View):
def post(request):
offer_id = request.POST.get('offer', None)
offer = get_object_or_404(BookingOffer, pk=offer_id)
offer.approved_by_bm = True
offer.save()
return redirect('some-url')