簡體   English   中英

如何使用帶有外鍵 '__str__ 的 __str__ 返回非字符串(產品類型)'

[英]how to use __str__ with foreign key '__str__ returned non-string (type Product)'

當我嘗試

__str__()

外國的方法它提供了這個錯誤

__str__ returned non-string (type Product)

模型.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)

如何表示,謝謝回復!

您不能從__str__方法返回str以外的__str__ self.product不是str ,而是Product對象。

但是,您可以調用str(..)來獲取該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)

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

因為models.ForeignKey(Product, on_delete=models.CASCADE , null=True)沒有返回str所以為那個函數返回一個字符串或者嘗試做

return str(self.product)

嘗試

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

此外,您可能需要在Product模型上定義__str__方法

ForeignKey返回連接到 Key 的整個鏈接基。 您需要從ProductOrder返回CharFeiled或從其他類中像self.product.product_name一樣攪拌

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM