Python 以字符串形式返回OneToOneField中的值-Django
我有一个带有OneToOneField(指向第二个模型)的模型,我想在第二个模型的变量内返回值 这是第二个模型:Python 以字符串形式返回OneToOneField中的值-Django,python,django,Python,Django,我有一个带有OneToOneField(指向第二个模型)的模型,我想在第二个模型的变量内返回值 这是第二个模型: class EstablishmentTable(models.Model): #Tabla de establecimientos #id for the 'pk as we have not declare any etmail = models.CharField(max_length=45) etpass = models.CharField(max
class EstablishmentTable(models.Model): #Tabla de establecimientos
#id for the 'pk as we have not declare any
etmail = models.CharField(max_length=45)
etpass = models.CharField(max_length=1024) #SHA-1024, SHA-512. SHA-256
etname = models.CharField(max_length=30)
etnumqueue = models.IntegerField()
def __str__(self):
return "name: "+self.etname+" mail: "+self.pk
这是第一款:
class QueueTable(models.Model): #Tabla de colas
#id for the 'pk as we have not declare any
qtname = models.CharField(max_length=30)
qtestablishment = models.OneToOneField(EstablishmentTable, on_delete=models.CASCADE,null=True)
qtnumstate = models.IntegerField()
qtdate = models.DateField(auto_now_add=True)
def __str__(self):
return "name: "+self.qtestablishment+" mail: "+self.pk
如何访问变量?如果我写
return”name:“+self.qt建立+”mail:“+self.pk”
返回:
TypeError:只能将str(而不是“EstablishmentTable”)连接到str
提前感谢您。您可以获取
自我建立的名称
,因为您已将此设置为空。但是,您需要防止出现无
:
class QueueTable(models.Model): #Tabla de colas
qtname = models.CharField(max_length=30)
qtestablishment = models.OneToOneField(EstablishmentTable, on_delete=models.CASCADE,null=True)
qtnumstate = models.IntegerField()
qtdate = models.DateField(auto_now_add=True)
def __str__(self):
if self.qtestablishment is None:
return … # return something in case qtestablishment is None
return 'name: {} mail: {}'.format(self.qtestablishment.etname, self.pk)
注意:型号通常没有表
后缀。模型不是表,它作为表存储在关系数据库中,但即使如此,它也有额外的逻辑,如验证器、管理器等
非常感谢。我还丢失了Establish表中self.pk的str转换
return“name:”+self.etname+“pk:”+str(self.pk)
。同样感谢您的注释,后缀表只是为了澄清模型与“数据库表”的等价性。我是django jeje的新人。
class QueueTable(models.Model): #Tabla de colas
qtname = models.CharField(max_length=30)
qtestablishment = models.OneToOneField(EstablishmentTable, on_delete=models.CASCADE,null=True)
qtnumstate = models.IntegerField()
qtdate = models.DateField(auto_now_add=True)
def __str__(self):
return 'name: {} mail: {}'.format(self.qtestablishment, self.pk)