如何在django中将数据保存到foriegn键中

时间:2016-12-08 10:25:04

标签: python django

在我的django项目中,我有两个模型

分类和另一个是Lead

类别是来自我正在使用的第三方应用的模型。

class CustomerLeads(models.Model):
    customer_name = models.CharField(max_length=50,null=True, blank=True)
    item_required = models.ForeignKey(Category,null=True, blank=True)

Views.py:

if request.method == 'POST':
    name = request.POST['customername']
    item = request.POST['item']
    customer_lead_obj = CustomerLeads.objects.create(customer_name = name)
    customer_lead_obj.item_required = item
    customer_lead_obj.save()

当我想保存时,会出现错误:

Cannot assign "u'Saari'": "CustomerLeads.item_required" must be a "Category" instance.

在这里,saari是我发布表单时获得的值。

1 个答案:

答案 0 :(得分:2)

很明显,request.POST['item']不是Category个实例,您需要根据request.POST['item']

从数据库中读取类别实例

您可以这样做:

item = request.POST['item']
cat = Category.objects.get(item=item)  # if Category has item field

现在,您可以像这样使用cat

customer_lead_obj.item_required = cat

如果item不是唯一的,您需要传递一个可用于识别您的类别的属性。而不是item,您可以传递cat_id,例如:

cat_id = request.POST['cat_id']
cat = Category.objects.get(id=cat_id)  # or (pk=cat_id)
# ...
customer_lead_obj.item_required = cat