Django:如何从外键和下一个外键获取价值?
Django: How to get value from foreign key and next foreign key?
我们需要从奖励中获取成本,但我们必须使用TwitchUser
这是我的models.py
class TwitchUser(models.Model):
username = models.CharField(max_length=250, verbose_name='username', null=True)
refresh_token = models.CharField(max_length=300, verbose_name='refresh_token', null=True)
id = models.CharField(max_length=150 ,primary_key=True)
login = models.CharField(max_length=250, null=True)
avatar = models.CharField(max_length=400, verbose_name='avatar')
params = models.ForeignKey('Parametrs', on_delete=models.CASCADE)
class Parametrs(models.Model):
skip = models.ForeignKey('Reward', on_delete=CASCADE)
chat_bot = models.BooleanField(default=False)
class Reward(models.Model):
id = models.CharField(primary_key=True, max_length=50)
title = models.CharField(null=True, max_length=50)
cost = models.IntegerField(default=0)
background_color = models.CharField(max_length=30, verbose_name='color', default='FFD600')
cooldown = models.IntegerField(default=30)
type = models.CharField(max_length=100, )
如果您想通过Parametrs和TwitchUser id获得奖励,您可以使用:
Reward.objects.filter(parametrs__pk=<parametr_id>, parametrs__twitchuser__pk=<twitch_user_id>)
如果你想通过TwitchUser获取参数,你可以使用:
Parametrs.objects.filter(twitchuser__pk=<twitch_user_id>)
如果你想获得奖励成本高于3的参数,你可以使用:
Parametrs.objects.filter(skip__cost__gt=3)
如果你想获取所有具有 id 为 5 的特定 Reward 的 TwitchUser 对象,你可以使用:
TwitchUser.objects.filter(params__skip__pk=0)
这些查询有帮助吗?
我们需要从奖励中获取成本,但我们必须使用TwitchUser
这是我的models.py
class TwitchUser(models.Model):
username = models.CharField(max_length=250, verbose_name='username', null=True)
refresh_token = models.CharField(max_length=300, verbose_name='refresh_token', null=True)
id = models.CharField(max_length=150 ,primary_key=True)
login = models.CharField(max_length=250, null=True)
avatar = models.CharField(max_length=400, verbose_name='avatar')
params = models.ForeignKey('Parametrs', on_delete=models.CASCADE)
class Parametrs(models.Model):
skip = models.ForeignKey('Reward', on_delete=CASCADE)
chat_bot = models.BooleanField(default=False)
class Reward(models.Model):
id = models.CharField(primary_key=True, max_length=50)
title = models.CharField(null=True, max_length=50)
cost = models.IntegerField(default=0)
background_color = models.CharField(max_length=30, verbose_name='color', default='FFD600')
cooldown = models.IntegerField(default=30)
type = models.CharField(max_length=100, )
如果您想通过Parametrs和TwitchUser id获得奖励,您可以使用:
Reward.objects.filter(parametrs__pk=<parametr_id>, parametrs__twitchuser__pk=<twitch_user_id>)
如果你想通过TwitchUser获取参数,你可以使用:
Parametrs.objects.filter(twitchuser__pk=<twitch_user_id>)
如果你想获得奖励成本高于3的参数,你可以使用:
Parametrs.objects.filter(skip__cost__gt=3)
如果你想获取所有具有 id 为 5 的特定 Reward 的 TwitchUser 对象,你可以使用:
TwitchUser.objects.filter(params__skip__pk=0)
这些查询有帮助吗?