我想链接到其他用户以显示他们的公共活动。
但我不知道如何通过模板链接它。
这是我的用户个人资料模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=64)
location = models.CharField(max_length=64, default='Tehran')
picture = models.ImageField(upload_to='profile_images', blank=True, default="/user_image/user_default.png")
slug = models.SlugField()
def save(self, *args, **kwargs):
self.slug = slugify(self.user)
super(UserProfile, self).save(*args, **kwargs)
# Override the __unicode__() method to return out something meaningful!
def __unicode__(self):
return self.user.username
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
但是我无法使用slug
,因为在用户完成其个人资料之前没有为用户个人资料定义。
请帮助我找到slug
之类的内容,以便在模板中使用以链接到其他用户:
<a href="{% url "index" user.profile.slug %}">{{ user.profile.name }}</a>
答案 0 :(得分:0)
根据您的代码,每次保存用户时都会生成slug字段。虽然它不建议用作用户标识符,因为具有相同用户名的2个用户将获得相同的slug。
建议您现在使用ID,直到找到防止重复的slug名称的方法。
在:
{% url "index" user.profile.slug %}
一旦你有一个接受slug参数的url,就可以使用:
url(r'^(?P<slug>[\w-]+)/$', views.index, name='index')
在views.index视图调用中,您可以执行以下操作:
user = User.objects.get(slug=slug)
为用户提供相关的slug