Django模型:__str__具有外部对象的名称

时间:2018-05-13 12:56:51

标签: python django web

所以我有ProductProductImage型号。每个Product都可以包含多个ProductImage模型。在Django管理页面中,我希望产品图像显示与其相关的产品名称。

class Product(models.Model):
    name = models.CharField(max_length=150)
    price = models.DecimalField(max_digits=9, decimal_places=2)
    product_count = models.IntegerField(blank=True, default=0)
    description = models.TextField()



class ProductImage(models.Model):
    image_addr = models.FileField(upload_to='products/')
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE)

    def __str__(self):
        q = <*name of the product with the product_id*>

如果产品图片是手机的图片,例如iPhone X,则图片应该显示。现在,产品图片列仅显示ProductImage个对象。我该如何解决这个问题? enter image description here

2 个答案:

答案 0 :(得分:2)

试试这个。

  

提示:字段名称可以是product_id

,而不是product

如果您将名称product_id更改为product,请记住以下

中的product_id
def __str__(self):
    return "%s %s" % (self.product_id.name, self.product_id.id )

答案 1 :(得分:0)

理想情况下,每个模型中都应该有一个 unicode 方法,以便您能够以更具描述性的方式查看数据。你的模型应该是这样的

class Product(models.Model):
    name = models.CharField(max_length=150)
    price = models.DecimalField(max_digits=9, decimal_places=2)
    product_count = models.IntegerField(blank=True, default=0)
    description = models.TextField()

    def __unicode__(self):
        return u"{}-{}".format(self.id, self.name)

class ProductImage(models.Model):
    image_addr = models.FileField(upload_to='products/')
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE)    

    def __unicode__(self):
        return u"{}".format(self.product_id)

我建议使用 unicode 而不是 str ,因为如果产品名称包含非ascii字符,则 str 会引发错误。