外键的概念

时间:2012-09-19 10:33:16

标签: django django-models django-views

我有两个模型,比如说A和B.

A是auth_user的一对一,B通过外键与A相关。

现在,当我尝试在模型B中提供数据时,它给出了 A_id'不能为空的错误。那么任何人都可以告诉我如何将数据提供给外键或者它可以默认获得模型A的ID,如果是,那么如何???

注意:

我为每个模型使用单独的表单,意味着我在模型A中提交数据,并且在成功之后它将我引用​​到配置文件页面,然后我点击链接以填充第二个模型的详细信息,因此第二个表单来了发挥作用。 所以在这里我不知道该外键如何获得模型A的id。

2 个答案:

答案 0 :(得分:1)

如果要在不参考模型A的情况下保存它,即FK为空,则应允许模型B FK字段为空(null = True,空白= True)。 否则,您必须使用A对象提供B对象,然后保存它。

答案 1 :(得分:0)

创建B对象时,需要提供对A对象的引用。

你说你正在使用一个表单来创建B对象,所以你可能需要一些东西......

b_instance = new_b_form.save(commit=False)
b_instance.a = A.objects.get(something="whatever")  # You'll know how to find the A object you want related.
b_instance.save()

设置一个将自动设置a_id保存在数据库中。

或者,您可以更改表单,以便用户可以选择A对象。