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获取的,对不起,我没有提到它,。,。