繁体   English   中英

Django:如何从外键和下一个外键中获取值?

[英]Django: How to get value from foreign key and next foreign key?

我们需要从 Reward 中获取成本,但我们必须使用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 ids 获得奖励,你可以使用:

Reward.objects.filter(parametrs__pk=<parametr_id>, parametrs__twitchuser__pk=<twitch_user_id>)

如果你想通过 TwitchUser 获取参数,你可以使用:

Parametrs.objects.filter(twitchuser__pk=<twitch_user_id>)

如果你想获得 Reward 成本高于 3 的 Parametrs,你可以使用:

Parametrs.objects.filter(skip__cost__gt=3)

如果你想获得所有具有 id 为 5 的特定 Reward 的 TwitchUser 对象,你可以使用:

TwitchUser.objects.filter(params__skip__pk=0)

这些查询有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM