Python 如何使用外键'__str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;

Python 如何使用外键'__str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;,python,django,model,Python,Django,Model,当我试着 __str__() 方法提供此错误 __str__ returned non-string (type Product) models.py class Product(models.Model): product_name = models.CharField(unique=True, max_length=50 , blank=False,null=False) price = models.PositiveIntegerField() act

当我试着

__str__()
方法提供此错误

__str__ returned non-string (type Product)
models.py

class Product(models.Model):
    product_name = models.CharField(unique=True, max_length=50 , 
    blank=False,null=False)
    price = models.PositiveIntegerField()
    active = models.BooleanField(default=True)
    def __str__(self):
        return self.product_name
class ProductOrder(models.Model):


    product = models.ForeignKey(Product, on_delete=models.CASCADE , 
    null=True)
    ordering = models.ForeignKey(Order, 
    on_delete=models.CASCADE,blank=True,null=True)
    pass 


    def __str__(self):
        return self.product
我也试过这个

def __str__(self):
        return self.product.product_name 

#product_name is a field from Product table 
将提供的错误是

__str__ returned non-string (type QuerySet)
如何表现它,谢谢回复

试试看

def\uuuu str\uuuuuu(自):
返回str(自我产品)

此外,您可能需要在您的
产品
模型上定义
\u str
方法

您不能从
\u str
方法返回除
str
以外的内容
self.product
不是
str
ing,而是
product
对象

但是,您可以在其上调用
str(..)
,以获取该
产品的文本表示:

class ProductOrder(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
    ordering = models.ForeignKey(Order, on_delete=models.CASCADE,blank=True,null=True)

    def __str__(self):
        return str(self.product)
class ProductOrder(models.Model):
product=models.ForeignKey(product,on_delete=models.CASCADE,null=True)
ordering=models.ForeignKey(Order,on_delete=models.CASCADE,blank=True,null=True)
定义(自我):

返回str(self.product)
,因为
models.ForeignKey(product,on_delete=models.CASCADE,
null=True)
没有返回
str
,因此请为该函数返回字符串或尝试执行以下操作

return str(self.product)

ForeignKey返回连接到键的整个链接基。您需要从ProductOrder返回CharFeiled,或从其他类返回类似于self.product.product\u name的搅拌

你能分享你的
产品
型号吗?试试
str(self.Product)
str(self.Product.Product\u name)
@namo:你能返回准确的回溯吗?您确定错误不在另一个
\uuuuu str\uuu
方法中吗?请显示您的
订单
型号和
\uuuu str\uu
method@namo:乍一看,似乎有另一种型号的
\uuuu str\uuuu
不返回字符串,可能是
顺序
,由于这是您的
ProductOrder
中的另一个
ForeignKey
。我也尝试了它,但不起作用(str返回非字符串(QuerySet类型)),然后发生了一些非常奇怪的事情。是否确实编写了
self.product
(而不是
product
)。您是否可以共享您的
产品
型号,也许某个产品的定义方式使其以某种方式返回
查询集
?如何在template@namo:通常,如果使用
{{some_object.foreign_key}}
它将获取相关对象,并因此使用所引用对象的
\uuu str\uu
。但是如果您当然指定了一个
\uuu str\uuu
,它返回
str(self.pk)
,这就是主键。我建议您使用相关模板、模型和视图提出一个新问题。然后我猜您的产品模型设置不正确。也许您在文件中的某个地方定义了一个产品变量,它以某种方式覆盖了您的模型定义?它不应该是一个查询集。你的产品模型的str方法是什么?我更新了代码,也分享了产品模型,