【发布时间】:2021-12-28 13:14:37
【问题描述】:
现在显示所有用户的费用,我只需要显示属于个人资料的费用。
我有模特:
class Spend(models.Model):
user = models.ForeignKey(Profile, null=True, blank=True, on_delete=models.SET_NULL)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
name = models.CharField(max_length=200)
spend = DecimalField(max_digits=14, decimal_places=2)
And model:
class Profile(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
username = models.CharField(max_length=200, blank=True, null=True)
在我看来:
@login_required
def costs(request):
filter = CostFilter(request.GET, queryset=Spend.objects.all())
return render(request, 'users/includes/costs.html', {
'filter': filter
})
模板:
{% for cost_item in filter.qs %}
<tbody>
<tr>
<td>{{ cost_item.name }}</td>
<td>{{ cost_item.spend }}</td>
<td>
class CostFilter(django_filters.FilterSet):
class Meta:
model = Spend
fields = ("name", "spend")
我在尝试:
filter = CostFilter(request.GET, queryset=Spend.objects.filter(user=request.user)
但是得到:
Cannot query "test": Must be "Profile" instance.
【问题讨论】:
标签: python django-models django-authentication django-filter django-users