如何從模型中獲取物件的 ID。
qs = Society.objects.all()
cityID = City.objects.get(pk=1)
上述查詢將只回傳一個 id 為 的物件1。但我需要所有城市id,這樣我才能訪問城市的名稱,id如下面的代碼所示。
for s in qs:
... s_name = qs.filter(name__iendswith=cityID.name)
... break
新增:模型社會和城市
class Society(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
created_at = models.DateTimeField(db_column='createdAt', auto_now_add=True) # Field name made lowercase.
updated_at = models.DateTimeField(db_column='updatedAt', auto_now=True) # Field name made lowercase.
locality = models.ForeignKey('Locality', models.DO_NOTHING, db_column='localityId', blank=True, null=True, related_name='society_set') # Field name made lowercase.
dot_com_database_id = models.IntegerField(db_column='dotComDatabaseId', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'societies'
class City(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
created_at = models.DateTimeField(db_column='createdAt', auto_now_add=True) # Field name made lowercase.
updated_at = models.DateTimeField(db_column='updatedAt', auto_now=True) # Field name made lowercase.
currency = models.CharField(max_length=255, blank=True, null=True)
connect_database_id = models.IntegerField(db_column='connectDatabaseId', blank=True, null=True) # Field name made lowercase.
dot_com_database_name = models.CharField(db_column='dotComDatabaseName', max_length=255, blank=True, null=True) # Field name made lowercase.
location_master_request_url = models.CharField(db_column='locationMasterRequestUrl', max_length=255, blank=True, null=True) # Field name made lowercase.
country = models.ForeignKey('Country', models.DO_NOTHING, db_column='countryId', blank=True, null=True, related_name='city_set') # Field name made lowercase.
pms_operation_status = models.CharField(db_column='pmsOperationStatus', max_length=255, blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'cities'
uj5u.com熱心網友回復:
你可以試試這樣的
qs = Society.objects.all()
citys = City.objects.all().values_list('name', flat=True)
qs = qs.filter(name__endswith=list(citys))
uj5u.com熱心網友回復:
嘗試這個
qs = Society.objects.all()
citys = City.objects.values_list('name', flat=True)
data = []
for name in citys:
response = qs.filter(name__iendswith=name)
if response.exists():
data.append(response)
print(data)
或者你可以做這樣的事情(我會推薦這個)
import operator
from django.db.models import Q
from functools import reduce
qs = Society.objects.all()
citys = City.objects.values_list('name', flat=True)
clauses = (Q(name__iendswith=name) for name in citys)
query = reduce(operator.or_, clauses)
data = qs.filter(query)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444827.html
