0
在我的模型有這樣一個ForeignKey關係:CreateOrUpdateView Django的模型
class Question(models.Model):
question = models.TextField(null=False)
class Answer(models.Model):
question = models.ForeignKey(Question, related_name='answer')
user = models.ForeignKey(User)
class Meta:
unique_together = (("question", "user"),)
相應的URL提交的答案中包含的問題的ID,像這樣:
url(r'^a/(?P<pk>\d+)/$', AnswerQuestion.as_view(), name='answer-question'),
隨着用戶來自self.request.user,我試圖得到類似CreateOrUpdateView
的東西,以便爲用戶和URL方案提供一些方便的導航。
直到現在我試圖與:
class AnswerQuestion(LoginRequiredMixin, CreateView):
,並添加初始值,但就是因爲PK的不乾淨。有了UpdateView
我遇到了問題,因爲我必須爲表單設置默認值。
有沒有人做過這樣的事情?我寧願避免爲同一個Answer創建和更新視圖。
謝謝,這似乎工作。通過閱讀文檔,我得到的印象是「get_object」與「CreateView」的情況無關。 –
與異常: 問題=超(AnswerQuestionView,個體經營).get_object(Question.objects.all()) 這是行不通的,因爲我希望創建/更新對象回答 –
這就是爲什麼你」重新設定'UpdateView'的子類,就像使用'get_object'一樣。您需要使用網址中指定的ID來更新正確答案或創建新答案。通過查詢問題來調用'super'只是一個小技巧,可以輕鬆獲得正確的問題。 get'和'post'方法調用的'get_object'方法返回的實際對象本身就是一個答案,如果它不存在,則爲'None'。 – knbk