尝试从其他模型中提取值时出现 Django ManyToManyField 错误
Django ManyToManyField error when trying to pull values from other models
我正在尝试使用纯 django 重新创建 Groupon,但遇到以下问题。这是我的以下想法
- 商户可以发起活动(具有唯一的活动 ID)
- 客户(拥有自己的唯一 ID)可以保存活动以供日后兑换
我创建了一个包含 3 列的模型(CampaignID、CustomerID 和一个默认值为 False 的布尔字段)
class Customer_save(models.Model):
Customer_ID = models.ManyToManyField(Customer)
Campaign_ID = models.ManyToManyField(Campaigns)
Redeemed = models.BooleanField(default = False) #False denotes that it hasnt been redeemed yet
def __str__(self):
return self.Customer_ID.username,self.Campaign_ID.Campaign_desc
我正在尝试创建一个假行,想测试是否所有内容都正确输入 table。但我遇到了错误。你能告诉我哪里错了吗?
Campaign_ID = '10001'
Customer_ID = 'C12345'
Customer_save.add(Customer_ID = Customer_ID,Campaign_ID = Campaign_ID)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: type object 'Customer_wallet' has no attribute 'add'
>>> New = Customer_save(Customer_ID = Customer_ID, Campaign_ID `=Campaign_ID)`
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/kj/Desktop/projects/lib/python3.4/site-packages/django/db/models/base.py", line 480, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
>>> new = Customer_save.Customer_ID.create(Customer_ID = Customer_ID)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'ReverseManyRelatedObjectsDescriptor' object has no attribute 'create'
TypeError: 'Customer_ID' is an invalid keyword argument for this function
您需要先创建相关记录,然后再将它们分配给多对多字段:
customer = Customer(...)
customer.save()
campaign = Campaigns(...)
campaign.save()
customer_save = Customer_save(Redeemed=...)
customer_save.save()
customer_save.Customer_ID.add(customer)
customer_save.Campaign_ID.add(campaign)
有关 Django documentation: Many-to-many relationships 的更多信息。
PS。我建议您为您的字段和模型选择更好的名称并遵循 formal style guide。它们有点误导,而且通常这样的名称会导致混淆,不要介意其他人很难遵循您的代码。
我正在尝试使用纯 django 重新创建 Groupon,但遇到以下问题。这是我的以下想法
- 商户可以发起活动(具有唯一的活动 ID)
- 客户(拥有自己的唯一 ID)可以保存活动以供日后兑换
我创建了一个包含 3 列的模型(CampaignID、CustomerID 和一个默认值为 False 的布尔字段)
class Customer_save(models.Model):
Customer_ID = models.ManyToManyField(Customer)
Campaign_ID = models.ManyToManyField(Campaigns)
Redeemed = models.BooleanField(default = False) #False denotes that it hasnt been redeemed yet
def __str__(self):
return self.Customer_ID.username,self.Campaign_ID.Campaign_desc
我正在尝试创建一个假行,想测试是否所有内容都正确输入 table。但我遇到了错误。你能告诉我哪里错了吗?
Campaign_ID = '10001'
Customer_ID = 'C12345'
Customer_save.add(Customer_ID = Customer_ID,Campaign_ID = Campaign_ID)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: type object 'Customer_wallet' has no attribute 'add'
>>> New = Customer_save(Customer_ID = Customer_ID, Campaign_ID `=Campaign_ID)`
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/kj/Desktop/projects/lib/python3.4/site-packages/django/db/models/base.py", line 480, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
>>> new = Customer_save.Customer_ID.create(Customer_ID = Customer_ID)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'ReverseManyRelatedObjectsDescriptor' object has no attribute 'create'
TypeError: 'Customer_ID' is an invalid keyword argument for this function
您需要先创建相关记录,然后再将它们分配给多对多字段:
customer = Customer(...)
customer.save()
campaign = Campaigns(...)
campaign.save()
customer_save = Customer_save(Redeemed=...)
customer_save.save()
customer_save.Customer_ID.add(customer)
customer_save.Campaign_ID.add(campaign)
有关 Django documentation: Many-to-many relationships 的更多信息。
PS。我建议您为您的字段和模型选择更好的名称并遵循 formal style guide。它们有点误导,而且通常这样的名称会导致混淆,不要介意其他人很难遵循您的代码。