【发布时间】:2018-05-16 09:33:20
【问题描述】:
我有以下型号
class Hostel(models.Model):
class Meta:
unique_together = (('name ', 'room_number'),)
name = models.CharField(max_length=30, choices=HOSTELS)
room_number= models.IntegerField()
faculty = models.CharField(max_length=40, choices=FACULTIES, blank=True)
def __str__(self):
return self.faculty + ': ' + self.name + ' - ' + str(self.room_number)
class MultimeStabila(models.Model):
room = models.ForeignKey(Hostel, primary_key=True)
guest1= models.CharField(max_length=30)
guest2= models.CharField(max_length=30)
guest3= models.CharField(max_length=30, blank=True, default="")
guest4= models.CharField(max_length=30, blank=True, default="")
guest5= models.CharField(max_length=30, blank=True, default="")
def __str__(self):
return self.guest1+ ' - ' + self.guest2+ ' - ' + self.guest3+ ' - ' + self.guest4 + ' - ' + self.guest5
现在我想在 14 号房间的 MultimeStabila 表 a、b、c、d、e 客人中进行插入
c = conn.cursor()
c.execute("SELECT * from stable_hostel where room_number = %s", [14])
data = c.fetchall()
c.execute("INSERT INTO stable_multimestabila(hostel_id, guest1, guest2, guest3, guest4, guest5) VALUES(%s, 'a', 'b', 'c', 'd', 'e')", [data[0]])
conn.commit()
但它告诉我
(1241, 'Operand should contain 1 column(s)')
我哪里错了?提前致谢
P.S.:我看到 this 的帖子似乎符合我的问题,但它不起作用。
【问题讨论】:
-
您使用原始查询而不是 Django 的 ORM 是否有特定原因?
-
主要原因是到目前为止我还没有使用任何ORM,我发现这种方式更容易。
-
@Siviu:这实际上会抵消 Django 的大部分好处。如果您稍后迁移模型,则可能需要重写所有查询。
-
从现在开始我会尝试使用ORM,谢谢:)