DJangoのCreateViewを使用してDBにデータを保存しています。これを行うには、私はここに指示に従っています:Form handling with class-based views DJango CreateViewがクラスベースのビューでDBキーを設定しない
私の理解によると、データがDBに保存された後、コントロールは "成功画面"のタイプに渡されます - この場合、私のシナリオでは、コントロールは "詳細ページ"に渡されます。詳細ページは以下のURLで表されます。
以下url(r'^owner/(?P<pk>[0-9]+)/contact/details/$', views.MstrstoreheadcontactDetailsView.as_view(),
name='owner-contact-details'),
(中クラスMstrstoreheadcontact)から
(Mstrstoreheadcontactモデルの一部である)get_absolute_url
関数によって呼び出されている「詳細ページ」私にとってはmodels.pyファイル
class Mstrstoreheadcontact(models.Model):
tenantid = models.ForeignKey('Mstrauthowner', models.DO_NOTHING, db_column='tenantid', blank=True, null=True)
contactid = models.BigIntegerField(primary_key=True, default=0)
genderid = models.BigIntegerField(blank=True, null=True, default=0)
firstname = models.CharField(max_length=20, blank=True, null=True)
lastname = models.CharField(max_length=20, blank=True, null=True)
officephoneno = models.CharField(max_length=20, blank=True, null=True)
cellphoneno = models.CharField(max_length=20, blank=True, null=True)
class Meta:
managed = False
db_table = 'MstrStoreHeadContact'
def get_absolute_url(self):
return reverse('masterdata:owner-contact-details', kwargs={'pk': self.contactid})
コード:return reverse('masterdata:owner-contact-details', kwargs={'pk': self.contactid}
をDBに追加された新しいレコードを表示する「詳細ページ」への制御を取ることになっています。
問題
上記のコードが実行されると、変数self.contactid
は下記を参照0に設定されている:
このアドレスバーに配置するために、次のURLになる:
http://127.0.0.1:8000/masterdata/owner/0/contact/details
"0"のため、これは404エラーにつながります。 DBでは、値が設定されている - DBはちょうど この部分に問題がない微に例えば10
に再び、データが保存されます。問題は、データが にDBに保存された後に何が起こるかにあります。以下は
はurls.pyファイルからurls.pyファイル
からいくつかのエントリです
url(r'^owner/(?P<pk>[0-9]+)/contact/details/$', views.MstrstoreheadcontactDetailsView.as_view(),
name='owner-contact-details'),
url(r'^owner/(?P<tenantid>[0-9]+)/contacts/add/$', views.MstrstoreheadcontactCreateView.as_view(),
name='owner-contact-add'),
views.pyファイルから
class MstrstoreheadcontactCreateView(CreateView):
model = Mstrstoreheadcontact
fields = [ 'firstname', 'lastname', 'genderid', 'officephoneno', 'cellphoneno']
def form_valid(self, form):
contact = form.save(commit=False)
contact.tenantid = Mstrauthowner.objects.get(tenantid=self.kwargs['tenantid'])
return super(MstrstoreheadcontactCreateView, self).form_valid(form)
コードiのようです(データが保存された後に)DBからデータを正しく戻さない。問題を解決するために私は何ができますか?
TIA