我正在尝试将外键传递给创建视图,最好的方法是什么?
型号:
class Building(models.Model):
# Name of the project
name = models.CharField(max_length=25, verbose_name='Project ID')
# The address of the building
address = models.CharField(max_length=100, verbose_name='Address')
class Cabinet(Project):
# The level that kitchen needs to be installed if applicable
level = models.IntegerField(null=True, blank=True, verbose_name="Floor")
# The building
building = models.ForeignKey(Building)
URL:
urlpatterns = patterns('',
...
# url to add new cabinet
url(r'^cabinet/new/(?P<pk>\d+)/$', CabinetCreate.as_view(), name='new_cabinet'),
...
视图:
class CabinetCreate(generic.CreateView):
model = Cabinet
form_class = UpdateCabinetForm
template_name = "projects/cabinetEdit.html"
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(self.get_context_data(form=form))
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
self.object = form.save(commit=False)
self.object.save()
模板:
我将建筑物ID传递给创建视图。
...
<a href="{% url 'projectmonitor:new_cabinet' building.id %}" class="left-link">Add New Cabinet</a>
...
创建新橱柜时,建筑物对象已经存在,有一个&#34; Save&#34;在CabinetCreate视图模板上触发POST请求的按钮,但每次保存新的cabinet对象时,它都会显示:
Column 'building_id' cannot be null
在保存机柜之前,有没有人知道如何分配建筑物或建筑物ID。提前谢谢。
答案 0 :(得分:0)
您可以在保存对象之前分配构建外键...
if form.is_valid():
self.object = form.save(commit=False)
# self.object.building = BUILDING OBJECT
self.object.save()