模型

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_listflat=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/

10-10 14:07