문제

Say I have a model that is

class Bottles(models.Model)
    BottleCode = models.IntegerField()

class Labels(models.Model)
    LabelCode = models.IntegerField()

How do I get a queryset of Bottles where the BottleCode and LabelCode are equal? (i.e. Bottles and Labels with no common Code are excluded)

도움이 되었습니까?

해결책

It can be achieved via extra():

Bottles.objects.extra(where=["Bottles.BottleCode in (select Labels.LabelCode from Labels)"])

You may also need to add an app name prefix to the table names, e.g. app_bottles instead of bottles.

Though @danihp has a point here, if you would often encounter queries like these, when you are trying to relate unrelated models - you should probably think about changing your model design.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top