สวัสดีครับ ขอโทษด้วยนะครับ ที่มารบกวนบ่อยๆ แต่ผมหาอ่านตามเว็บต่างประเทศแล้วไม่ค่อยเข้าใจ
เรื่องมีอยู่ว่า
ผมจะสร้าง form ให้ user เข้ามาแก้ไขข้อมูลส่วนตัวครับ โดยที่ ถ้า user คนนั้นมีข้อมูลอยู่แล้ว ก้จะเห็นข้อมูลเดิม ปรากฏอยู่ในแต่ละฟิลด์ด้วยน่ะครับ แบบในหน้า admin เวลาแก้ไขข้อมูล user น่ะครับ
ผมเห็นในเว็บบางที่ เขาใช้ form_for_instance แต่ของผมมี ฟิลด์ e-mail, firstname lastname ที่มาจาก user เดิมด้วยน่ะครับ เลยไม่รู้จะสร้าง form ยังไง
code ครับ
views.py
def customizer(request):
if not request.user.is_authenticated():
return HttpResponseRedirect("/reg/login_required")
#user = request.user
#profile = user.get_profile()
if request.method == 'POST':
form = CustomProfile(request.POST)
if form.is_valid():
form.save()
return render_to_response("customprofile.html",{'form':form})
else:
form = CustomProfile()
return render_to_response("customprofile.html",{'form':form})
forms
class CustomProfile(forms.Form):
firstname = forms.CharField(required=False)
lastname = forms.CharField(required=False)
email = forms.EmailField(required=False)
avatar = forms.Field(widget=forms.FileInput, required=False)
signature = forms.CharField(widget=forms.Textarea, required=False)
def clean_avatar(self):
pass
def save(self):
pass
ผมไม่รู้ว่าจะ query จาก DB มาใส่ใน form ยังไงน่ะครับ ช่วยชี้แนะด้วยครับ
ขอบคุณครับ
ผมไม่แน่ใ
kowito2 Fri, 03/10/2008 - 13:13
ผมไม่แน่ใจว่าทำไมโค้ดมันดูวุ่นวายอย่างนี้ แค่เขียนฟอร์มธรรมดา ลองอ่านนี่ดูน่าจะเข้าใจนะครับ http://docs.djangoproject.com/en/dev//
ไม่แน่ใจว
meledictas Fri, 17/10/2008 - 01:31
ไม่แน่ใจว่าได้คำตอบหริอยัง ใชั meta ครับ ลองดูข้างล่าง
from django import forms
from models import Article
class ArticleForm(forms.ModelForm):
comment = forms.CharField(required=False)
หรือถ้าอยากให้ form เหมือน model ไปเลยก็
from django import forms
from models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
หรือถ้าอยากเอาออกเป็นบางตัวเช่นไม่อยากให้ผู้ใช้ที่ลอกอินอยู่แล้วต้องคอยพิมพ์ชื่อก็
from django import forms
from models import Article
class ArticleForm(forms.ModelForm):
comment = forms.CharField(required=False)
แต่ตอน views ต้องใส่เองเช่น
article, created = Article.objects.get_or_create(...)#ใส่query เช่น slug=, id=, user=...
if request.method == "POST":
form = ProfileForm(request.POST, instance=article)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj .user = request.user
new_obj .save()
return HttpResponseRedirect(new_obj .get_absolute_url())
#http get
else:
form = ArticleForm(instance=article)
template = "userprofile/profile/personal.html"
template_context = {
'form': form,
}
return render_to_response('article_form.html', template_context )
http://feedfrog.net