python - Django : Type Mismatch Error in models. py

标签 python django

当我在 python3 manage.py shell 中执行这些行时:

In [1]: from dream_site.models import Mentor, Mentee, Team
In [2]: a = Mentee.objects.get( pk = 1 ).name
In [3]: b = Mentor.objects.get(pk=1).name
In [4]: print( a + b )

它按预期打印正确的输出,但是在 models.py 中,当我有以下代码时,它告诉我 int() 参数必须是字符串或数字错误:

def __str__(self):     # Belonging to Team object
    return ( str( self.pk ) + " - " +  Mentor.objects.get( pk = self.mentor_id ).name   + " - " +  Mentee.objects.get( pk = self.mentee_id ).name   )

这是错误发生的地方。即使它在 shell 中将这些显示为 str 类型。
models.py 的其他部分:

class Mentor(models.Model):
    mentor_id =     models.AutoField( primary_key = True )
    name =          models.CharField( default = '', max_length = 254 )

class Mentee(models.Model):
    mentee_id =     models.AutoField( primary_key = True )
    name =          models.CharField( default = '', max_length = 254 )

class Team(models.Model):
    team_id =                       models.AutoField( primary_key = True )
    mentor_id =                     models.ForeignKey( Mentor )
    mentee_id =                     models.ForeignKey( Mentee )
    team_since =                    models.DateTimeField( default = django.utils.timezone.now, blank = True )

最佳答案

您因使用错误的命名约定而感到困惑。

在团队中,mentor_idmentee_id 不是 ID。它们是实际的 MentorMentee 对象。因此,在您的 __str__ 方法中,您尝试使用 mentee_id 的值查询 Mentee 类,实际上是将现有的 Mentee 对象传递给查询。没有必要这样做。

你的字段应该叫做mentormentee,你应该直接在你的方法中使用它们:

return str(self.pk) + " - " +  self.mentor.name   + " - " +  self.mentee.name

或者更好的是,使用字符串插值:

return "%s - %s - %s" %  (self.pk, self.mentor.name, self.mentee.name)  

关于python - Django : Type Mismatch Error in models. py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630095/

相关文章:

django - AWS Elastic Beanstalk : WSGI path incorrect?

django - 导入错误 : No module named modpython

python - matplotlib.dates(和 datestr2num)的绘图刻度中的日期格式问题

从列表创建独立列表的 Pythonic 方法?

python - 使用 panda 格式化 Excel 的日期输出

django - 将 South 添加到 Django 项目、开发和生产中

django - 使用用户名作为参数时没有用户匹配给定的查询

django - Docker 构建给了我这个错误 "/bin/sh: -c requires an argument , The command '/bin/sh -c' 返回一个非零代码 : 2"

python - 中大型站点的项目根目录中通常有十几个 django 应用程序吗?不觉得臃肿吗?

python - 从给定 channel 的 YouTube API V3 中提取 viewCount 和 SubscriberCount,其中 channelID 不等于 userID