模型
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等)。
当我试图更新eposodedetail模型中的季节值时,我得到以下错误:
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()
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
是seasuredetail实例的外键,您试图分配一个列表。所以,去掉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/