型号
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_list
和 flat=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/