1

Django では、データをフィルタリングして結果を次のように表示する必要があります。例えば

Company3(20)
Company1(12)
Company2(3)

ここで、"Company1,Company2,Company3"は会社名で、括弧内の"20,12,3"は no です。特定の会社によって掲載された求人の。

models.py

class User(models.Model):
     first_name= forms.CharField(max_length=30,widget=forms.TextInput())
     last_name = forms.CharField(max_length=30,widget=forms.TextInput())
     username = forms.CharField(max_length=30,widget=forms.TextInput())
     email = forms.EmailField(widget=forms.TextInput())
     password = forms.CharField(widget=forms.PasswordInput())
     companyname = forms.CharField(max_length=30,widget=forms.TextInput())

class jobs(models.Model):
     emp = models.ForeignKey(User, unique=False)
     title = models.CharField(max_length=30)
     referencecode = models.CharField(max_length=30)
     jobsummary = models.TextField()
     jobdetails = models.TextField()
     key_skills = models.CharField(max_length=30)

私はviews.pyを与えようとしました

def search_result(request):

     details=User.objects.filter(jobs__isnull=False).select_related()
     return render_to_response('searchresult.html', {'details': details})

templates
<ul>
{% for d1 in details %}
<li>{{ d1.companyname }}({{ d1.count }})</li>
{% endfor %}
</ul>

上記のように結果を表示するためのアイデアをいくつか与えてください

4

3 に答える 3

1

d1.jobs_set.count代わりに、ジョブの数を取得するために使用する必要があります。

テンプレートを次のように更新します。

<ul>
{% for d1 in details %}
    <li>{{ d1.companyname }}({{ d1.jobs_set.count }})</li>
{% endfor %}
</ul>
于 2013-04-23T05:07:54.483 に答える
1

おそらく、より効率的なものは次のようになります

details = User.objects.filter(jobs__isnull=False).annotate(job_count=Count('jobs'))\
                   .order_by('job_count')

そしてテンプレートで

<ul>
{% for d1 in details %}
    <li>{{ d1.companyname }}({{ d1.job_count }})</li>
{% endfor %}
</ul>
于 2013-04-23T05:20:58.043 に答える