Tôi đang sử dụng các kiểu máy để nhận danh sách phát và các mục của nó. Nó cũng chứa kịch bản đăng nhập. Tôi đang cố gắng đặt người dùng hiện đã đăng nhập vào mô hình người dùng. Bạn có thể thấy điều này tôi đã đăng trước How to avoid this dropdown combo box?valueError in modelsforms
class playlistmodel(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=200)
def __unicode__(self):
return self.title
class itemsmodel(models.Model):
playlist = models.ForeignKey(playlistmodel)
item = models.TextField()
def __unicode(self):
return self.item
class playlistform(ModelForm):
class Meta:
model = playlistmodel
exclude = {'user'}
class itemsform(ModelForm):
class Meta:
model = itemsmodel
exclude = {'playlist'}
Đây là giao diện danh sách:
def playlistview(request):
if request.method == 'POST':
form = playlistform(request.POST)
if form.is_valid():
data = form.save(commit=False)
data.user = request.user
data.save()
return render_to_response('playlist.html', {'data': data})
else:
form = playlistform()
return render_to_response('playlist.html', {'form': form, 'user': request.user}, context_instance=RequestContext(request))
Playlist.html file:
https://gist.github.com/1576136
Lỗi trang:
https://gist.github.com/1576186
Nhưng tôi nhận được ValueError
:
Exception Type: ValueError Exception Value: Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x7f0234028f50>": "playlistmodel.user" must be a "User" instance
Traceback: Local vars --- data.user = request.user
Đây là settings.py tôi https://gist.github.com/1575856
Cảm ơn bạn.
Chỉ trong trường hợp, xác minh bạn có [TEMPLATE_CONTEXT_PROCESSORS] mặc định (https://docs.djangoproject.com/en/1.3/ref/settings/#template-context-processors) trong 'settings.py' –
Mà phiên bản Django bạn đang sử dụng? Hãy thử 'dữ liệu.thay vào đó, user_id = request.user.id'. – Alasdair
@ César Tôi đã đăng liên kết cho settings.py trên phần câu hỏi của tôi. – rnk