我有以下两种型号。在
class Customer(models.Model):
Customer = models.OneToOneField(User)
CustomerID = models.CharField(max_length = 15)
def __str__(self):
return self.Customer.username
class Customer_Coupons(models.Model):
Customer_Det = models.ManyToManyField(Customer)
Campaign_Det = models.ManyToManyField(Campaigns)
Redeemed = models.BooleanField(default = False)
def Get_Customer_ID(self):
return '\n'.join([p.CustomerID for p in self.Customer_Det.all()])
def Get_Campaign_ID(self):
return '\n'.join([p.CampaignID for p in self.Campaign_Det.all()])
def __str__(self):
return self.Customer_Det.CustomerID
我对客户钱包的str方法有问题。我在查询时似乎得到了下面的错误。有没有更好的方法来定义str方法?我更希望有一个CustomerID或Customer name,它再次存储在User表中。在
^{pr2}$
您的
Customer_Coupons.Customer_Det
字段是ManyToManyField
,因此self.Customer_Det
不表示单个值。在您可能需要遍历
self.Customer_Det
中所有可能的Customer.CustomerID
,以构建返回字符串。或者只使用你遇到的第一个,或者任何适合你需要的东西。在尝试:
根据您的需要,将
all
更改为filter
或get
。在编辑
从评论中可以看出,您希望您的
Customer_Coupons
模型每次都有与1个客户和1个活动相关的每个实例。在本例中,对它们都使用ForeingKey
字段,而不是ManyToManyField
。 您将能够以您在问题中尝试的方式访问相关的对象字段(即self.Customer_Det.CustomerID
)。在如果您需要在以下两种情况下使用优惠券:
{cd9>的实例不希望与客户关联。竞选活动也是如此。在
相关问题 更多 >
编程相关推荐