您好,我正在 Django 中制作一个后端服务器,用于存储来自应用程序的用户数据。 以下是我的模型。
class Subscriber(models.Model):
subId = models.IntegerField(max_length=20,unique=True,blank=False)
Name = models.CharField(max_length=25,blank=True)
class SMS(models.Model):
subscriberId = models.ForeignKey(Subscriber, null=False)
epochTime = models.IntegerField(null = False)
time = models.CharField(max_length= 250 ,blank = False)
class Call(models.Model):
subscriberId = models.ForeignKey(Subscriber, null=True)
epochTime = models.IntegerField(null = False)
time = models.CharField(max_length= 50 ,blank = False)
Date = models.CharField(max_length= 50 ,blank = False)
我需要编写一个 Django 查询,我将提供 subscriberId,Django 将返回我使用来自 Call 和 SMS 的该用户的数据(基本上想使用 Join )。 早些时候我在 mysql 中应用了它。
select * from Server_Text JOIN (Server_Call) ON (Server_SMS.subscriberId_id = 11 and Server_Call.subscriberId_id = 11) ;
服务器是我的 mysql 数据库。
最佳答案
当您使用 Django 时,您不应该考虑连接和 sql 查询;关键是模型层将这些抽象掉了。您只想获取订阅者,然后按照关系获取短信和通话信息:
subscriber = Subscriber.objects.get(subId=my_subscriber_id)
print subscriber.sms_set.all() # all SMSs for that subscriber
print subscriber.call_set.all() # all Calls for that subscriber
如果您经常这样做,可以通过在初始查询中使用 prefetch_related('sms', 'call')
来提高效率。
关于python - 如何使用 Django 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34134457/