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)

Était-ce utile?

La 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top