我遇到的问题是我无法访问html {{ profile.slug }}
中的模型字段。在模板中我可以访问模型,让我告诉你。
我有2个型号Profile,和Oferto。 在Oferto模型的详细视图中,我想链接到创建Oferto的用户配置文件。 Oferto模型有一个现场用户,
我正在尝试查找与Oferto.user
相对应的profile.slug
以下是在测试浏览器中看到的
[<Profile: Red>]
Name: oFFER
User: Red
Description:
Time: 9
Stelo: None
Requirements:9
,模板如下
{% block content %}
<a>{{ profile }}</a>
<p>Name: {{ oferto.name }}</p>
<p>User: {{ oferto.user }}</p>
<p>Description: {{ oferto.descripion }}</p>
<p>Time: {{ oferto.time }}</p>
<p>Stelo: {{ oferto.stelo }}</p>
<p>Requirements:{{ oferto.requirements }}</p>
<hr>
<p>Location: {{ oferto.location }}</p>
<p>tags: {{ oferto.tags }}</p>
<p>{{ PROJECT_URL }} / {{ STATIC_URL }}{{ oferto.image }}</p>
{% endblock %}
如果我尝试使用profile.slug
,它只会出现空白而不在html中
views.py
class OfertoDetailView(ExtraContextMixin,DetailView):
model = Oferto
def extra(self):
profile = Profile.objects.all()
return dict(profile = profile)
class ExtraContextMixin(object):
def get_context_data(self, **kwargs):
context = super(ExtraContextMixin, self).get_context_data(**kwargs)
context.update(self.extra())
return context
def extra(self):
return dict()
如果您想知道我使用mixin的原因,请参阅答案 django - DetailView how to display two models at same time
我的模特
# Ofertoj.models.py
class Oferto(models.Model):
user = models.ForeignKey(User)
# profile = models.OneToOneField(Profile)
name = models.CharField(max_length=150)
description = models.TextField(max_length=3000)
time = models.DecimalField(max_digits= 10000000,decimal_places =2,null= True)
stelo = models.DecimalField(max_digits= 10000000,decimal_places =2,null= True)
location = models.TextField(max_length=3000)
slug = AutoSlugField(('slug'), max_length=128, unique=True, populate_from=('name',))
tags = tagging.fields.TagField()
image = models.ImageField(upload_to='Ofertoj',blank=True, null=True)
requirements = models.TextField(max_length=550000,blank=True, null=True)
def get_absolute_url(self):
return reverse('oferto_detail', kwargs={'slug': self.slug})
def __unicode__(self):
return self.name
def get_tags(self):
return Tag.objects.get_for_object(self)
# turtle.models.py
class BaseInfo(models.Model):
name = models.CharField(max_length=100)
contact_name = models.CharField(max_length=100)
email = models.EmailField(max_length=75)
phone = models.CharField(max_length=20)
address = models.CharField(max_length=3000)
city = models.CharField(max_length=3000)
state = models.CharField(max_length=3000)
code = models.IntegerField()
country = models.CharField(max_length=3000)
image = models.ImageField(upload_to='photos/%Y/%m/%d',blank=True)
slug = AutoSlugField(('slug'), max_length=128, unique=True, populate_from=('name',))
tags = tagging.fields.TagField()
def __unicode__(self):
return self.name
def get_tags(self):
return Tag.objects.get_for_object(self)
# profile.models.py
class Profile(BaseInfo):
bio = models.TextField(max_length=15000000)
user = models.ForeignKey(User)
def get_absolute_url(self):
return reverse('profile_detail', kwargs={'slug': self.slug})
# tempilo.profiles.UserProfiles
from models import Profile
class MyUser(AbstractBaseUser):
identifier = models.CharField(max_length=40, unique=True)
USERNAME_FIELD = 'identifier'
profile = OneToOneField(Profile,primary_key=True)
答案 0 :(得分:1)
profile
是一个查询集,而不是一个实例。查询集没有slug
属性。
您需要在额外方法中获取Profile的特定实例,或者遍历模板中的配置文件。
答案 1 :(得分:0)
[<Profile: Red>]
在测试输出中可见这一事实表明您正在将Profile
实例正确传递给模板。
因此问题出在profile.slug
之内。您确定slug
课程上有Profile
字段吗?