Django Model:int()参数必须是字符串,类字节对象或数字,而不是'元组'

sel*_*i69 1 python django

我的models.py:

class Channel(models.Model):
    title = models.CharField(max_length=255)

    def snapshot_statistics(self):
        new_channel_stat = ChannelStatistic(channel=self)
        new_channel_stat.save()


class ChannelStatistic(models.Model):
    channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
    view_count = models.IntegerField(default=0)

    def save(self, *args, **kwargs):
        self.view_count = 3,
        super(ChannelStatistic, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当触发snapshot_stastistics()时,我收到以下错误:

int() argument must be a string, a bytes-like object or a number, not 'tuple'
Run Code Online (Sandbox Code Playgroud)

在django调试中,我可以看到:

values  
[(<django.db.models.fields.related.ForeignKey: channel>, None, 35),
 (<django.db.models.fields.IntegerField: view_count>, None, (3,)),
Run Code Online (Sandbox Code Playgroud)

django将我对3的赋值视为tupel的view_count属性.

这个行为的问题是什么?我怎么解决呢?

提前致谢!

Nad*_*ège 8

这里有一个不需要的逗号:

self.view_count = 3,
Run Code Online (Sandbox Code Playgroud)

这创造了一个元组.

  • 非常感谢.我应该在隔夜工作时多休息..;) (3认同)