Question

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)

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top