【问题标题】:TypeError Error during template rendering模板渲染期间的 TypeError 错误
【发布时间】:2022-09-27 16:39:08
【问题描述】:

当我在 Order 表中添加 ForeignKeys 时,我遇到了这个错误

enter image description here

这是我的桌子

from itertools import product
from django.db import models

# Create your models here.

class Customer(models.Model):
    name = models.CharField(max_length = 200, null = True)
    phone = models.CharField(max_length = 200, null = True)
    emails = models.CharField(max_length = 200, null = True)
    date_created = models.DateTimeField(auto_now_add = True, null = 
    True)

    def __str__(self):
        return self.name
        
class Tag(models.Model):
    name = models.CharField(max_length = 200, null = True)

    def __str__(self):
        return self.name

class Product(models.Model):
    CATEGORY = (
        (\'Indoor\', \'Indoor\'),
        (\'Out Door\', \'Out Door\'),
    )

    name = models.CharField(max_length = 200, null = True)
    price = models.FloatField(null = True)
    category = models.CharField(max_length = 200, null = True, choices = 
    CATEGORY)
    description = models.CharField(max_length = 200, null = True, blank 
    = True)

    date_created = models.DateTimeField(auto_now_add = True, null = 
    True)
    tags = models.ManyToManyField(Tag)
    def __str__(self):
        return self.name

class Order(models.Model):
    STATUS = (
        (\'pending\', \'pending\'),
        (\'Out for delivery\', \'Out for delivery\'),
        (\'Delivered\', \'Delivered\'),
    )
    customer = models.ForeignKey(Customer, null = True, on_delete = 
    models.SET_NULL)
    product = models.ForeignKey(Product, null = True, on_delete = 
    models.SET_NULL)
    date_created = models.DateTimeField(auto_now_add = True, null = 
    True)
    status = models.CharField(max_length = 200, null = True, choices = 
    STATUS)

但是当我删除那些 ForeignKeys 时,它可以正常工作而不会出错......

enter image description here enter image description here

...但我也无法访问其他表

enter image description here

  • 您好,欢迎来到 StackOverflow!请在问题中输入详细信息,而不是链接到图像。
  • 嘿,谢谢你建议我输入代码。我编辑了我的 cmets,请您重新检查一下。

标签: python django


【解决方案1】:

我看不到您的其余代码(从 Orders 类返回的 def __str__)。但在我看来您正在尝试将 Object 作为字符串返回。

IE:您希望将已创建对象的__str__ 属性显示为您的外键产品“整个对象”。

但是您不能将对象“产品”作为字符串返回。当你这样做时,认为这就是你正在做的事情:

def __str__(self):
    return self.product  # <-- This is an the object, not a string or the __str__ property

您将返回内存中的对象地址,并且由于该对象尚不存在,因此它返回 None。

尝试将您的回报转换为显式字符串

def __str__(self):
    return str(self.product) # <-- Returns the __str__ of the FK Object.

或尝试返回已经是字符串的属性

def __str__(self):
    return self.product.name # <-- Returns the attribute from the FK Object.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 2020-11-18
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多