我試圖從用戶檢索數據。我想要顯示用戶信息的表單也與我用於更新此信息的表單相同。用相同的表單和模板創建,獲取和編輯用戶信息
UPDATE3
一些更新後,我做這項工作,這是我的代碼。如果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方法中發送的表單的元素。 –
我在這裏要做的是在同一視圖中顯示錶格內容,並在其中編輯表格。我現在會嘗試一些代碼,然後我會更新這篇文章。 –