Python int()参数必须是字符串或数字,而不是';会议';
考虑一下我在Web上使用的Django函数Python int()参数必须是字符串或数字,而不是';会议';,python,django,django-models,tornado,Python,Django,Django Models,Tornado,考虑一下我在Web上使用的Django函数 def MeetingRecord(userid,mtngid,mesg): obj = Usage() obj.name = userid obj.meeting_id = mtngid obj.action = mesg # obj.participantid = participantid obj.save() 这是模型 class Usage(models.Model): use
def MeetingRecord(userid,mtngid,mesg):
obj = Usage()
obj.name = userid
obj.meeting_id = mtngid
obj.action = mesg
# obj.participantid = participantid
obj.save()
这是模型
class Usage(models.Model):
user = models.ForeignKey('User',related_name = 'usage_user',null = True)
meeting = models.ForeignKey('Meeting',related_name = 'meeting_usages',null = True)
participant= models.ForeignKey('Participant',related_name = 'meeting_participant_id',null = True)
date = models.DateTimeField(auto_now = True)
action = models.CharField(max_length = 500)
miscellaneous = models.CharField(max_length = 500)
我在tornado类中调用这个方法,比如
会议记录(检查用户是否存在、mtng、mesg)
但我正在跟踪追踪
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado-2.3-py2.7.egg/tornado/web.py", line 1021, in _execute
getattr(self, self.request.method.lower())(*args, **kwargs)
File "tornado_main.py", line 383, in post
MeetingRecord(check_user_exist,mtng,mesg)
File "tornado_main.py", line 503, in MeetingRecord
obj.save()
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/base.py", line 551, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/manager.py", line 203, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/query.py", line 1576, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/sql/compiler.py", line 909, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/sql/compiler.py", line 872, in as_sql
for obj in self.query.objs
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/fields/related.py", line 964, in get_db_prep_save
connection=connection)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/fields/__init__.py", line 292, in get_db_prep_save
prepared=False)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/fields/__init__.py", line 284, in get_db_prep_value
value = self.get_prep_value(value)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/models/fields/__init__.py", line 537, in get_prep_value
return int(value)
TypeError: int() argument must be a string or a number, not 'Meeting'
我想确认userid是User类的实例,mtngid是meeting类的实例
请帮助我找出出现此错误的原因。您的会议是一个外键,它需要一个对象,而不是实际的引用。您也没有
会议id
字段
试试这个:
def MeetingRecord(userid,mtngid,mesg):
obj = Usage()
obj.name = userid
obj.meeting = mtngid
obj.action = mesg
# obj.participantid = participantid
obj.save()
您还应该适当地命名方法的参数 您的会议是一个外键,它需要一个对象,而不是实际的引用。您也没有
会议id
字段
试试这个:
def MeetingRecord(userid,mtngid,mesg):
obj = Usage()
obj.name = userid
obj.meeting = mtngid
obj.action = mesg
# obj.participantid = participantid
obj.save()
您还应该适当地命名方法的参数 只是一个有根据的猜测:“obj.meeting_id=mtngid”这里你可能传递的是一个会议实例而不是会议id。只是一个有根据的猜测:“obj.meeting_id=mtngid”这里你可能传递的是一个会议实例而不是会议id。你使用了
obj.meeting_id
,它是会议id字段()的外键。
自动场是。这就是为什么错误消息会显示关于int()参数的原因。在您的情况下,必须使用
obj.meeting\u id=mtngid.id
。Burhan的对象引用方式更加清晰。我只建议将mtngid重命名为mtng,因为它不是id,而是object。您使用了obj.meeting\u id
,它是meeting'id字段()的外键。
自动场是。这就是为什么错误消息会显示关于int()参数的原因。在您的情况下,必须使用
obj.meeting\u id=mtngid.id
。Burhan的对象引用方式更加清晰。我只建议将mtngid重命名为mtng,因为它不是id,而是object。你能为会议记录显示你的models.py吗?检查更新的问题…………你能做什么:打印userid
,mtngid
,mesg
,type(userid),type(mtngid),type(mesg)我想你在什么地方传递了错误的数据类型,但是堆栈日志没有显示变量的内容。我已经尝试过Jure这里是打印用户id会议的输出用户对象打印mtngid会议的对象为pring mesg成功创建打印类型(userid)打印类型(mtngid)会议为打印mesg成功创建“obj.Meeting_id=mtngid”在这里,您可能传递的是一个会议实例而不是会议id。您能为MeetingRecord显示您的models.py吗?检查更新的问题………您能做什么:打印userid
,mtngid
,mesg
,键入(userid),键入(mtngid),键入(mesg)我认为您在某处传递了错误的数据类型,但是堆栈日志没有显示变量的内容。我已经尝试过Jure这里是打印用户id会议的输出用户对象打印mtngid会议的对象为pring mesg成功创建打印类型(userid)打印类型(mtngid)会议为打印mesg成功创建“obj.Meeting_id=mtngid”这里您可能传递的是会议实例,而不是会议id。