0

複数のテーブルから個別のフィールドをフィルタリングしたい。たとえば、ユーザー入力は「python,web developer」です。「python」のキースキルにマッチした求人と「web developer」のタイトルにマッチした求人の両方を表示したい。

In User table

id  |  username  |  password
-----------------------------
1   |  employer1 |  sffddgfd
2   |  employer2 |  dfggfgfd

In Company Table

id  |  emp_id  |  companyname
-----------------------------
1   |    1     |  abc
2   |    2     |  xyz



In jobs table

+----+--------+--------------------+
| id | emp_id | title              |
+----+--------+--------------------+
|  1 |      1 | Software Developer |
|  2 |      1 | Software Developer |
|  3 |      1 | testing            |
|  4 |      1 | webdeveloper       |
|  5 |      2 | Software Developer |
|  6 |      2 | testing            |
|  7 |      2 | software           |
+----+--------+--------------------+

In employerkeyskills table

+----+--------+--------+--------------------+
| id | emp_id | job_id | keyskills          |
+----+--------+--------+--------------------+
|  1 |      1 |      2 | python             |
|  2 |      1 |      2 | django             |
|  3 |      1 |      2 | html               |
|  4 |      1 |      3 | manual testing     |
|  5 |      1 |      3 | automation testing |
|  6 |      1 |      4 | css                |
|  7 |      1 |      4 | javascript         |
|  8 |      1 |      4 | html               |
|  9 |      1 |      4 | php                |
| 10 |      2 |      5 | python             |
| 11 |      2 |      5 | php                |
| 12 |      2 |      6 | SQL                |
| 13 |      2 |      6 | Manual Testing     |
| 14 |      2 |      7 | sql                |
| 15 |      2 |      7 | testing            |
| 16 |      2 |      7 | python             |
| 17 |      2 |      7 | html               |
+----+--------+--------+--------------------+

models.py

class User(models.Model):
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=100)

class company(models.Models):
    emp = models.ForeignKey(User, unique=False)
    companyname = models.CharField(max_length=100)

class jobs(models.Model):
    emp = models.ForeignKey(User, unique=False)
    title = models.CharField(max_length=100)

class employerkeyskills(models.Model):
    emp=models.ForeignKey(User,unique=False)
    job=models.ForeignKey(jobs,unique=False)
    keyskills=models.CharField(max_length=50)

ビュー.py

details = employerkeyskills.objects.filter(keyskills__icontains=search)

上記のコマンドを使用すると、重複した結果が得られました。最初はキースキルのみでフィルタリングしました。しかし、同じ仕事が2回繰り返されます。重複フィールドをフィルタリングしたい。

4

3 に答える 3

1

最初に入力文字列を分割できます。

key_skill, title = "python,web developer".split(',')

次に、モデル間でジョブをフィルター処理します。

jobs = Job.objects.filter(title=title, employerkeyskills__keyskills=key_skill)
于 2013-06-25T10:53:10.680 に答える
0

あなたはこれを行うことができます:

jobs.object.filter(employerkeyskills_set__keyskills__in = ["python", "web developer"])

related_name 引数を追加する場合:

class employerkeyskills(models.Model):
    emp=models.ForeignKey(User,unique=False)
    job=models.ForeignKey(jobs,unique=False, related_name='skills')
    keyskills=models.CharField(max_length=50)

jobs.object.filter(skills__keyskills__in = ["python", "web developer"])
于 2013-06-25T11:00:27.817 に答える