我一直在看文檔,並認爲也許內聯formset將是答案。但我不完全確定。在Django中的表單中的表單?
通常,只要您創建一個ModelForm,它就只會綁定到相關的Model。但是如果你想在表單中編輯兩個模型呢?
簡而言之,當編輯類conversation
,並從下拉列表中選擇Deal
類時,我希望能夠更改所選交易類的狀態(但不是deal_name)。全部在相同的形式。 Django允許嗎?
class Deal(models.Model):
deal_name = models.CharField()
status = models.ForeignKey(DealStatus)
class Conversation(models.Model):
subject = models.CharField()
deal = models.ForeignKey(Deal, blank=True, null=True)
更新:
我不知道,如果直列formssets的答案是以下行爲的原因:
查看:
call = get_object_or_404(contact.conversation_set.all(), pk=call_id)
ConversationFormSet = inlineformset_factory(Deal, Conversation)
fset = ConversationFormSet(instance=call)
variables = RequestContext(request, {'formset':fset})
return render_to_response('conversation.html', variables)
模板
{{ formset }}
我得到的結果不是我所期望的。我收到了三種形式的對話課程,第一個填寫了(由於編輯和傳遞)。但是,Deal
DropDown菜單根本沒有列出。爲什麼?
這正是內聯是 – 2012-07-16 11:43:26
@ArgsKwargs感謝。我已經更新了這個問題,如果你可以看一看。 – Houman 2012-07-16 12:12:10
由於內聯方式的工作,他們期望內聯始終是您正在編輯的交易對象的一部分,如果您想以其他方式工作,則需要另一種方法,您可以在交易字段中進行破解並創建自定義如果交易字段輸入與主對象不一致,則將會話對象移動到另一筆交易 – 2012-07-16 12:20:18