Python 批量创建外键列表,提供意外输出

Python 批量创建外键列表,提供意外输出,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,批量创建时会产生意外的输出,这里出了什么问题 class User(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) class MessagePost(models.Model): send_to = models.ForeignKey(User) media_def = models.TextFiel

批量创建时会产生意外的输出,这里出了什么问题

class User(models.Model):
    first_name =  models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

class MessagePost(models.Model):
    send_to = models.ForeignKey(User)
    media_def = models.TextField(blank=True)
    message = models.TextField()

#userList fetched from db
userList = [User(first_name='a',last_name='b'),User(first_name='x',last_name='y')]

MessagePost.objects.bulk_create([MessagePost(send_to=u , media_def='media/images/1.png' , message='hai everyone') for u in userList ])
在这里使用
bulk\u create
时,会产生以下错误的输出

TypeError : expected string or buffer

请发布完整的回溯。另外,仅仅执行
User(first_name='a',last_name='b')
不会创建记录。你仍然需要保存它。您应该改为使用。@BurhanKhalid我相信这里的语法是有效的;bulk_create对尚未保存的模型对象列表进行操作。你的观点是:完整的回溯当然站得住脚。哦,但是现在我再看一遍,看起来只有MessagePost对象在批量创建,它们有用户对象的外键,而用户对象还没有创建。我错了!是:)-它只适用于相同类型的模型,因为它不会触发任何
save()
s或处理关系,期望它保存相关模型然后输入键引用充其量是乐观的。@Andrewgorcest你说得对,但用户列表是从db获取的,对不起,我没有提到它,。,。