0
我有一個輪廓模型,看起來像這樣的時候:Model.objects.get()的作品,而不是使用一個ForeignKey屬性
class Profile(models.Model):
username = models.ForeignKey(User, blank=True, null=True)
age = models.IntegerField(default=0)
points = models.IntegerField(default=100)
def __str__(self):
return str(self.username)
這裏是我的模板
<h3><a href="{% url 'profile' u=i.user %}" class='username_foreign'>{{ i.user }}</a></h3>
指向這個網址:
url(r'^profile/(?P<u>\w+)/', profile, name='profile')
這是我的看法功能:
def profile(request, u):
if request.method == 'GET':
profile = Profile.objects.get(username=u)
return render(request, 'base.html', {})
正如你在這裏看到的,我通過u
這是用戶名。但是,當我通過username
穿過嘗試get()
的profile
,我得到這個錯誤:
ValueError at /profile/zorgan/
invalid literal for int() with base 10: 'zorgan'
然而,當我在我的Profile
模型的任何其他屬性使用get()
,它工作正常。它甚至打印我的username
。所以,當我這樣做:
def profile(request, u):
if request.method == 'GET':
print(u) #prints username
profile = Profile.objects.get(points=50)
print(profile.username) #successfully prints username (same as 'u')
return render(request, 'base.html', {})
正如你可以在上面看到,越來越通過其屬性Profile
對象username
不起作用。問題與u
無關,因爲它可以成功打印。任何想法是什麼問題?
非常感謝Thankyou解決問題。我不太熟悉double __語法,所以你可以給出一個簡短的總結或者指出我解釋它的地方?爲什麼它用於ForeignKey字段而不用其他字段? – Zorgan
因爲用戶名值是*在另一個模型*,即用戶。 –