ユーザーからデータを取得しようとしています。私がユーザー情報を表示したいフォームも、私がこの情報を更新するのに使うものと同じです。同じフォームとテンプレートでユーザー情報を作成、取得、編集する
更新3
いくつかの更新の後、私はこの作業を行い、これは私のコードです。 somenoneを行うには良い方法を持っている場合、これはそれを共有することができます:)
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class informacionFacturacion(models.Model):
usuario = models.ForeignKey(User, on_delete=models.CASCADE)
apellidos = models.CharField(max_length=100)
nombres = models.CharField(max_length=100)
[More fields...]
def __str__(self):
self.apellidos
forms.py
from .models import informacionFacturacion
#Create your forms here.
class informacionFacturacionForm(ModelForm):
class Meta:
model = informacionFacturacion
fields = [
"usuario",
"apellidos",
"nombres",
[More fields...]
]
views.py
@login_required
def datosPersonales(request):
#Filter query by user ID
query = informacionFacturacion.objects.filter(usuario=request.user)
form = informacionFacturacionForm()
#If query has content, edit record, else, create a new record
if query:
if request.method == "POST":
form = informacionFacturacionForm(request.POST or None, instance=query[0])
if form.is_valid():
edit_content = form.save()
edit_content.save()
else:
if request.method == "POST":
form = informacionFacturacionForm(request.POST)
if form.is_valid():
create_content = form.save(commit=False)
create_content.save()
return HttpResponseRedirect(reverse('datosPersonales'))
context = {
"titulo": "Datos personales | Co.",
"body_class": "class= sidebar_main_open sidebar_main_swipe",
"form": form,
"infoFacturacion": query,
}
template = "micuenta/datosPersonales.html"
return render(request, template, context)
ありがとうございます。
save()を使用してコンテンツを編集できないことがわかりました。私はテーブルが内容を持っているかどうかをチェックするif文を書くでしょう。私はそれを行うことができます:if infoFacturacion:#show edit form else:#show create form。右? –
「コンテンツを編集する」とはどういう意味ですか?オブジェクトのフォームとテンプレート内のフォームは、両方とも変更可能です。テンプレートから来るものを見たい場合は 'print request.POST'を使うことができます。ビューのPOSTメソッドで送られたフォームの要素を含む辞書を表示します。 –
私がここでやろうとしているのは、テーブルコンテンツを同じビューに表示し、どこで編集できるかを示すことです。私は今いくつかのコードを試し、私はポストを更新します。 –