mysql - 什么是 SELECT col1 FROM table WHERE col2=somestring 的 Django ORM 等价物?

标签 mysql django django-models sqlite django-orm

型号

class ShowDetail(models.Model):
    title = models.CharField(max_length=100)

class SeasonDetail(models.Model):
    title = models.ForeignKey(ShowDetail, on_delete=models.CASCADE)

class EpisodeDetail(models.Model):
    showTitle = models.ForeignKey(ShowDetail, on_delete=models.CASCADE)
    seasonNumber = models.ForeignKey(SeasonDetail, on_delete=models.CASCADE)
    episodeTitle = models.CharField(max_length=100, null=True, blank=True)
    episodeNumber = models.CharField(max_length=5, null=True, blank=True)

逻辑

episode_update.seasonNumber = SeasonDetail.objects.filter(title=showname).values('season')

我想检查给定电视节目(绿箭侠、闪电侠等)的季节值(01、02、03 等)是否存在。

当我尝试更新 EpisodeDetail 模型中的季节值时,出现以下错误:

invalid literal for int() with base 10: 'The Flash'

当我使用

episode_update.seasonNumber = SeasonDetail.objects.filter(title=showname).values_list('season', flat=True)

获取错误

invalid literal for int() with base 10: 'The Flash'

当我使用

episode_update.seasonNumber = SeasonDetail.objects.filter(title=ShowDetail.objects.get(title=showname)).values_list('season', flat=True)

我得到了

Cannot assign "['01']": "EpisodeDetail.seasonNumber" must be a "SeasonDetail" instance.

最佳答案

是的,您可以使用 values()查询集方法。

YouModel.objects.filter(col2=something).values('col1')

更新 1

如果你想要原始表示,你需要使用 values_listflat=True

YouModel.objects.filter(title=showname).values_list('season',flat=True)

返回

[01, 02, 03,....]

更新 2 在您的模型 seasonNumber 是 SeasonDetail 实例的外键,您正在尝试分配一个列表。因此,删除 value_list() 并获取第一个。

episode_update.seasonNumber = SeasonDetail.objects.filter(title=showname)[0]

关于mysql - 什么是 SELECT col1 FROM table WHERE col2=somestring 的 Django ORM 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38710381/

相关文章:

MySQL Connector/C 尝试使用 localhost 而不是 127.0.0.1 进行连接时不支持请求的图元文件操作

mysql - 需要帮助从 MySQL 填充数据网格

mysql - Django 中的抽象基类与泛型关系

mysql - Django 查询集 : Why can't I filter an annotated QuerySet?

php - Laravel 模型中的 MySql 数据库查询问题

php - 并行执行多个 php 脚本

python - 如何使用默认按钮将 FloatField 增加或减少 1000?

django - 将现有的实时 Django 站点从一台服务器迁移到另一台服务器,并且用户记录完好无损

python - 在处理包/蛋时,zc.buildout 是否比 pip 提供更多

django - ForeignKey 与抽象类的关系