Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以字符串形式返回OneToOneField中的值-Django_Python_Django - Fatal编程技术网

Python 以字符串形式返回OneToOneField中的值-Django

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

我有一个带有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_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)