Djangoで設定されたクエリからHTMLの情報を表示しようとしています。しかし、私はそれを行う最善の方法を知らない。DjangoはクエリーセットでビューからオブジェクトをHTMLに返しますか?
このアイデアは、私がユーザーの名前とそれに関連する競技会の名前を表示するページを開いたときのアイデアです。ユーザーはDjangoの管理者で競争を作成することができます。
私のURLはそれです。
url(r'^home/(?P<company_name>\w+)', HomeView.as_view(), name='home'),
モデルです。
class Competition(models.Model):
name = models.CharField(max_length=200,null=False)
image = models.CharField(max_length=200, null=False)
url = models.CharField(max_length=200, null=False)
startingDate = models.DateTimeField(null=False)
deadline = models.DateTimeField(null=False)
description = models.CharField(max_length=200, null=False)
user = models.ForeignKey(User, null=False)
私がURLにこのような何か書くユーザー、返す上記のコードviews.py
class HomeView(ListView):
model = User, Competition
template_name = 'home.html'
context_object_name = 'company'
def get_queryset(self, **kwargs):
company = self.kwargs['company_name']
try:
queryset = User.objects.filter(username__exact=company).get()
except User.DoesNotExist:
queryset = None
return queryset
で:http://127.0.0.1:8000/home/diego/
HTMLの家は私のためにユーザーの名前を表示します例:
{% if company %} <div class="jumbotron"> <div class="container">
{{company.username}} </div></div> {% endif %}
ただし、ユーザーが作成したコンテストをHTMLの 'for'です。
私はチェーンで2つのクエリセットを返してみましたが、私はそれを動作させません。
これもまた。
queryset2 = Competition.objects.filter(user__username__exact=company).get()
get()は、1つ以上のオブジェクトを返すエラーを表示します。これは、ユーザーがこれに関連する3つの競技を持っているため、論理です。
少しの例がありますか?または私の質問を解決するための任意のアイデア。
どうもありがとう
が、私はこれを試してみましたが、「ユーザー」オブジェクトが反復可能ではありません(もちろん、それはただ一つである)
class HomeView(ListView):
model = User
template_name = 'home.html'
context_object_name = 'company'
def get_queryset(self, **kwargs):
company = self.kwargs['company_name']
try:
queryset = User.objects.filter(username__exact=company).get()
queryset2 = Competition.objects.filter(user__username__exact=company)
result_list = list(chain(queryset, queryset2))
except User.DoesNotExist:
result_list = None
return result_list
私がしようと試みると(GETを削除されています)最初のクエリセットとデータはHTMLに戻ります。
どのようにしてHTMLのリストの項目にアクセスできますか?そのクラスを使用して、変数 '会社'を印刷するとその結果が表示されます。
[<User: diego>, <Competition: test1>, <Competition: test2>]
しかし、 'for'を使用すると、文字列の値が取得されます。どのようにすることができます私は違い「ユーザー」と「競争」
{%for compa in company%}
{{compa}}
{%endfor%}
結果は次のとおりです。 サンディエゴ test1の test2の
ありがとうございます。 Vipul Vishnuそれは大丈夫です。 –