【发布时间】:2018-06-17 00:09:22
【问题描述】:
我希望仅为当前用户显示性能模型的数据。现在该页面显示所有性能数据,而不仅仅是登录用户的数据。
我不确定我的 models.py 设置是否不正确(是否每个模型都需要与用户相关的外键?)或者在 views.py 文件中是否有解决方案(我试过这个使用 get_context_data 但无法正常工作)
非常感谢任何帮助!
models.py
class Adaccount(models.Model):
accountname = models.CharField(max_length=250)
def __str__(self):
return self.accountname
class Performance(models.Model):
adaccount = models.ForeignKey(Adaccount, on_delete=models.CASCADE)
date = models.DateField(auto_now_add=True)
campaign = models.CharField(max_length=500)
adset = models.CharField(max_length=500)
clicks = models.IntegerField()
impressions = models.IntegerField()
ctr = models.FloatField()
cpc = models.FloatField()
cpm = models.FloatField()
conv1 = models.IntegerField()
conv2 = models.IntegerField(blank=True, null=True)
conv3 = models.IntegerField(blank=True, null=True)
def __str__(self):
return str(self.date) + ' - ' + str(self.adaccount)
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
adaccounts = models.ForeignKey(Adaccount,null=True)
company = models.CharField(max_length=250, blank=True)
website = models.CharField(max_length=30, blank=True)
def __str__(self):
return self.company
views.py
class IndexView(LoginRequiredMixin, generic.ListView):
model = Performance
context_object_name = 'all_performance'
template_name = 'dashboard/index.html'
login_url = '/login/'
redirect_field_name = 'redirect_to'
def get_queryset(self):
return Performance.objects.all()
class HomeView(TemplateView):
model = Adaccount
template_name = 'dashboard/home.html'
HTML 模板
<strong>CTR | CPC | CPM</strong><br>
{% for daily in all_performance %}
<span>{{ daily.ctr }} | {{ daily.cpc }} | {{ daily.cpm }}</span><br>
{% endfor %}
【问题讨论】:
标签: python django django-models django-templates django-views