ユーザーが特定の金額で特定の金額で入札できるDjangoプロジェクトを作成しました項目。アイテムの所有者のテンプレートを作成して、入札者の金額とランクの一覧を見ることができます。入札を受け入れるために、私はリストにAcceptフィールドを作成します。Python:複数のユーザーが投稿したオブジェクト(入札)のリストからオブジェクト(入札)を受け取り、djangoを使用してユーザーの詳細を返す方法
私の入札者のリストページです。
アイテムの所有者が入札額を好むと、彼はそれを受け入れて、その特定の入札者の詳細にリダイレクトします。
私はどのようにして受け入れられた入札が保存され、入札者の詳細を返すように、ジャンゴモデルを作れますか?ここ
がbid_createとbid_listのための私のコードです:
models.py:
class Bid(models.Model):
user = models.OneToOneField(User, null=True, blank=True)
amount = models.IntegerField()
forms.py:
class BidForm(forms.ModelForm):
class Meta:
model = Bid
fields = ["amount"]
views.py:
@login_required
def bid_create(request):
form = BidForm(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
print(form.cleaned_data.get("amount"))
instance.user = request.user
instance.save()
context = {
"form": form,
}
return render(request, "bid.html", context)
def bid_list(request):
queryset = Bid.objects.all().order_by('amount')
current_rank = 1
counter = 0
for bid in queryset:
if counter < 1: # for first bid
bid.rank = current_rank
else: # for other bids
if bid.amount == queryset[counter - 1].amount:
# if bid and previous bid have same score,
# give them the same rank
bid.rank = current_rank
else:
# first update the rank
current_rank += 1
# then assign new rank to bid
bid.rank = current_rank
counter += 1
context = {"bid_rank" : "current_rank",
"queryset": queryset,
"title": "List"}
return render(request, 'bid_list.html', context)
クラスオークション(models.Model): 所有者= models.ForeignKey(ユーザーは、null = Trueの場合、空白=真) accepted_bid = models.ForeignKey(入札) views.py: デフaccept_bid(リクエスト): \t return render(request、 'accept_bid.html') オークションでaccepted_bidをビューに渡すにはどうすればよいですか? – vanam
ビューを指すURLを作成する必要があります。そのため、 'bid_id'を使ってテンプレートから呼び出すことができます。最後のurlが 'category'ビューにパラメータを渡している[この例(http://www.tangowithdjango.com/book17/chapters/models_templates.html#parameterised-url-mapping)]を見てください。 (このチュートリアルを完了すると多くの面で役に立ちます) – dnaranjo