0
訪問一個用戶查看網頁時,我收到以下錯誤:爲什麼我在view.py中的查詢給我一個TypeError?
TypeError at /reviews/ben/
show_reviews() got an unexpected keyword argument 'username'
然而,當我運行相同的查詢(即; B = UserReview.objects.all,打印二)在Django控制檯,一切印刷品我可以看到所有已發佈的評論。我不確定我是否在show_reviews()方法中犯了一個簡單的錯誤,或者如果問題比這個更深入。這是我的代碼。
models.pyclass UserReview(models.Model):
name= models.ForeignKey(User, related_name='usersbeingreviewed', null=True, blank=True)
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='reviewauthors')
pub_date=models.DateTimeField(auto_now_add=True)
stars = models.IntegerField(max_length=5)
comment = models.CharField(max_length=100)
def __str__(self):
return u'%s %s %s %s %s' % (self.name, self.author, self.pub_date, self.stars, self.comment)
urls.py
urlpatterns = patterns('',
url(r"^reviewseller/(?P<test>\w+)/$", get_review),
url(r"^reviews/(?P<username>\w+)/$", show_reviews))
views.py
def get_review(request, test):
if request.method == 'POST':
p = UserReviewForm(request.POST)
testname = User.objects.get(username=test)
if p.is_valid():
reviewform=p.save(commit=False)
reviewform.name=testname
reviewform.author=request.user
reviewform.save()
return HttpResponseRedirect('/thanks/')
def show_reviews(request):
latest_reviews = UserReview.objects.all()
context1 = {'latest_reviews': latest_reviews}
return render(request, 'reviews.html', context1)
forms.py
class UserReviewForm(ModelForm):
class Meta:
model = UserReview
fields = ['stars', 'comment']
widgets = {
'comment': Textarea,
'stars': RadioSelect(choices=[
(1, 'Very poor'),
(2, 'Poor'),
(3, 'Satisfactory'),
(4, 'Great'),
(5, 'Excellent')
])
}
我之前遇到另一個問題,其中ReviewSeller表單是保存用戶名字符串而不是用戶實例,因此我不知道這些是否是相關問題?
(或從URL中刪除它,因爲它不是在視圖中使用。) –
@DanielRoseman是啊,我不知道是什麼OP試圖實現。謝謝。 – alecxe
哦,我認爲應該把latest_reviews = UserReview.objects.get(用戶名=用戶名) – stephan