के बाद खोल में ठीक काम करता है:उपयोगकर्ता ऑब्जेक्ट को नया बनाये बिना अपडेट कैसे करें?
>>> from django.contrib.auth.models import User
>>> user=User.objects.get(pk=1)
>>> user.first_name = u'Some'
>>> user.last_name = u'Name'
>>> user.save()
>>> user.first_name
u'Some'
>>> user.last_name
u'Name'
तब मैं रूपों के साथ भी ऐसा ही करने की कोशिश:
# forms.py
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['first_name', 'last_name']
# views.py
def edit_names(request, template_name="registration/edit_names.html"):
if request.method == "POST":
form = UserForm(data=request.POST)
if form.is_valid():
user = form.save(commit=False)
user.save()
url = urlresolvers.reverse('my_account')
return HttpResponseRedirect(url)
else:
form = UserForm(instance=request.user)
page_title = _('Edit user names')
return render_to_response(template_name, locals(),
context_instance=RequestContext(request))
# edit_names.html
<form action="." method="post">{% csrf_token %}
<table>
{{ form.as_table }}
<tr><td colspan="2">
<input type="submit" />
</td></tr>
</table>
</form>
मैं ब्राउज़र में पेज खोल सकते हैं और दो क्षेत्रों First name
और Last name
देखते हैं।
Exception Type: IntegrityError
Exception Value: column username is not unique
मैं भी UserForm में क्षेत्रों की सूची पर ['username']
जोड़ने की कोशिश की: जब मैं क्षेत्रों में भरें और फ़ॉर्म सबमिट मैं त्रुटि मिलती है। अगर मैं अपने उपयोगकर्ता नाम (request.user के रूप में) के साथ फ़ॉर्म सबमिट करेंगे, प्रपत्र प्रदर्शित करता है ERRORMESSAGE:
User with this Username already exists.
अगर मैं कुछ अनूठा नाम करने के लिए उपयोगकर्ता नाम बदलकर कि उपयोगकर्ता नाम के साथ नया प्रयोक्ता बनाया जा रहा है।
प्रश्न यह है: मैं उपयोगकर्ता ऑब्जेक्ट को कैसे अपडेट कर सकता हूं, नया नहीं बना सकता?
इतने वर्बोज़ होने के लिए खेद है, लेकिन मुझे यहां मुश्किल खोज थी और मेरे प्रश्न का उत्तर नहीं मिला।
Btw, इन मामलों मेरे लिए काम नहीं है:
- Extending UserCreationForm to include email, first name, and last name
- add field first_name and last_name in django-profile
- How to create a UserProfile form in Django with first_name, last_name modifications?
संपादित करें:
@fceruti मैं सिर्फ सुझाव दिया req पर जोड़ा गया uest.method == 'पोस्ट' शाखा इस:
form = UserForm(data=request.POST, instance=request.user)
वहाँ नहीं एक 'अनुरोध किया जाएगा। उपयोगकर्ता' अगर यह एक साइन अप फॉर्म –
है लेकिन यह एक संपादन उपयोगकर्ता का रूप है: पी – fceruti
आह क्षमा करें, मैंने दृश्य नाम –