1
我一直在試圖讓這個查詢工作幾個小時,現在我還是喜歡一些幫助,因爲我還是對Django很陌生。Django中的複雜內部聯接
我有這些模型(簡體)
class Job(models.Model):
country = models.ForeignKey(Country)
active = models.BooleanField()
class Country(models.Model):
name = models.CharField(max_length=100)
class State(models.Model):
name = models.CharField(max_length=100)
country = models.ForeignKey(Country)
class City(models.Model):
name = models.CharField(max_length=100)
state = models.ForeignKey(State)
class Worker(models.Model):
name = models.CharField(max_length=100)
addresses = models.ManyToManyField(Address)
class Address(models.Model):
address_field = models.CharField(max_length=100)
city = models.ForeignKey(City)
我想選擇所有的所有我的工人有上的地址的國家,不同的和活動的作業。我認爲有這樣的代碼:
def get(self, request):
worker = Worker.objects.get(pk=request.user.id)
full_query = Q(active=True)
# my problem is here, since it is a ManyToMany Relationship
full_query &= Q(country__id__in=worker.addresses ??????)
jobs = Job.objects.filter(full_query)
我認爲這將工作讓所有勞動者的地址在一個for循環和救國救民的ID列表中,做
country_ids = []
for address in worker.addresses:
country_ids.append(address.city.state.country.id)
Q(country__id__in=[country_ids])
但我認爲Django的有更優雅的方式來做到這一點。
在此先感謝!
你是一個天才,先生。非常感謝! – somagrave
不用擔心。不是一個天才,剛剛用Django查詢集;)。 – ChidG