模型
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.
答案 0 :(得分:2)
是的,您可以使用values()
queryset方法。
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]
答案 1 :(得分:0)
使用django版本> = 1.8:使用values_list
YourModel.objects.values_list('col1', 'col2')
您也可以使用: -
QuerySet.only()
和QuerySet.defer()
可用于定义ORM查询应获取的字段,并推迟其他字段,直到访问模型上的相应属性。