은의이 모델은 다음과 같이 구성되어 있다고 가정 해 봅시다하십시오 JobReference 찾아보실 수 있습니다 내 웹 사이트 사용자에장고 IDS
class Worker(models.Model):
name_char = models.CharField(max_length=4,null=True, blank=True)
body_parts_mtm = models.ManyToManyField('BodyPart')
class Job(models.Model):
job_name = models.CharField(max_length=6,unique=True)
job_reference_mtm = models.ManyToManyField('JobReferenceCode')
class JobReferenceCode(models.Model):
job_ref_char = models.CharField(max_length=13)
worker_mtm = models.ManyToManyField('Worker')
class BodyPart(models.Model):
body_part_name_text = models.TextField()
class MembersSimilarity(models.Model):
similarity_score_float = models.FloatField(max_length=10)
worker_fk = models.ForeignKey(Worker,on_delete=models.CASCADE)
job_fk = models.ForeignKey(Job,on_delete= models.CASCADE)
#not sure if I need this field to do what I want but here it is:
bodypart_fk = models.ForeignKey(BodyPart,on_delete=models.CASCADE)
, 나는 특정 출력주고 싶습니다 : 테이블 줄 수는 (Job, [BodyParts])의 조합으로 제어됩니다. 내 보기에, 그것을하기 위해
, 나는이 문제를 해결하기 위해 발견 어떻게 생각 그 (간체)이 구조가있는 함수를 만드는 것입니다 :
job_ref_code = 1
job_query = Job.objects.filter(job_reference_mtm=job_ref_code)
for job in unique_job_query:
sims = MembersSimilarity.objects.filter(job_fk=job)
workers_from_sim= Worker.objects.filter(id__in=sims.values('worker_fk'))
unique_ids_list = []
for worker in workers_from_sim:
combination = set(worker.cath_mtm.all())
if combination not in unique_ids_list:
unique_ids_list.append(combination)
#All of this "for worker" loop to construct this list; do I need to acces like it ? Let say this list has this structure = [[1,2,3],[1],[1,2]]
for body_part_combination in unique_body_ids_list:
sim_queryset=MembersSimilarity.objects.filter(job_fk=job_query,bodypart_fk=body_part_combination)
#Note sim_query_set : if I can access to these similarities here (specific similarities of a job and a combination of body parts, my problem will be solved.
를이 가능하다 이런 식으로 걸러 내시겠습니까? 나는 구체적인 신체 부위와 각 직업에 대한 세부 사항을 가진 노동자들과 구별 할 필요가있다. 어떻게 해야할지 찾고 아무 것도 찾지 못했습니다.이 뷰어 함수를 최적화하는 방법에 대한 의견을 듣기 위해이 질문을하고 있습니다 (예 : 신체 분열 아이디의 고유 한 집합을 구성하는 루프 ...)
나는이 질문이 아주 거대하다는 것을 알고 있지만, 지금부터 며칠 째 고생하고 있으며, 다른 모델 구조를 많이 시도했다. 어떤 도움이라도 고맙다는 것 이상은 감사 할 것이다.
sim_queryset = MembersSimilarity.objects.filter을 job_fk__in을 내 질문에 따르면,이 문제를 해결 = job_query, bodypart_fk__in = combination) – Mani
"Brains, Legs"가있는 근로자는 특정 직업에 대해서만 "Brain"이있는 근로자와 다릅니다. 그래서 "__in"을 사용할 수 없습니까? @Mani –
혼란 스럽네요, 당신은 무엇을 성취하려고합니까? 조합은 ID 집합입니까? 에서 사용할 수 있다면. – Mani