管理员的ID是当我在管理面板中打开管理员用户。同样,michael
的编号是但是当我点击配置文件图标而不是显示管理员的配置文件时,我获得了michael
的配置文件。为了得到我使用的编号为requested user
的user.id
。其他用户的用户档案显示
另外问题是我不能在这种模型中使用slu slu。
餐厅/ base.html文件
{% if user.is_authenticated %}
<li class="nav-item">
<a class="nav-link user-icon" href="{% url 'userprofiles:profile' user.id %}">
<i class="fa fa-user"></i>
</a>
</li>
{% else %}
的UserProfiles/urls.py
urlpatterns = [
# url(r'^profile/(?P<profile_name>[-\w]+)/(?P<profile_id>\d+)/$', views.profile, name='profile'),
url(
r'^profile/(?P<profile_id>\d+)/$',
views.profile,
name='profile'
),
]
的UserProfiles/views.py
def profile(request, profile_id):
if profile_id is "0":
userProfile = get_object_or_404(UserProfile, pk=profile_id)
else:
userProfile = get_object_or_404(UserProfile, pk=profile_id)
user_restaurant = userProfile.restaurant.all()
user_order = userProfile.order_history.all()
total_purchase = 0
for ur in user_order:
total_purchase += ur.get_cost()
return render(
request,
'userprofiles/profile.html',
{
'userProfile':userProfile,
'user_restaurant':user_restaurant,
'user_order':user_order,
'total_purchase':total_purchase
}
)
下的UserProfiles/profile.html
{% for user_restaurant in user_restaurant %}
{{user_restaurant.name}}<br/>
{{user_restaurant.address }}
{% endfor %}
的UserProfiles/models.py
class UserProfile(models.Model):
user = models.OneToOneField(User)
restaurant = models.ManyToManyField(Restaurant)
order_history = models.ManyToManyField(OrderMenu)
# favorites = models.ManyToManyField(Restaurant)
is_owner = models.BooleanField(default=False)
class Meta:
def __str__(self):
return self.user.username
# def get_absolute_url(self):
# return reverse('userprofiles:profile', kwargs={'slug':self.slug, 'id':self.id})
如何使用金属块对于这样的模型,以便在管理面板该用户的段塞被自动保存?因为没有post方法。
但主要问题是我正在获取其他用户的userprofile。
如果你创建了一个id = 3的第三个用户,你会得到Michael吗? – dtgq
有3个用户。一位管理员,一位迈克尔和另一位匿名。如果我做http:// localhost:8000/userprofiles/profile/1 /我得到michael的用户配置文件和/ 2 /显示匿名和/ 3 /显示404错误的用户配置文件。 – Serenity
在管理面板中,我检查了用户admin的ID是1,michael是2,匿名是3. – Serenity