django - 如何通过 Django 模型过滤项目
问题描述
我想获取我的应用程序上每个用户拥有的表的总数。usingTables.objects.all().count
返回所有表格总数,但我想获取每个用户拥有的表格数量。
模型.py
class User(AbstractBaseUser, PermissionsMixin):
name = models.CharField(max_length=30, blank=True, null=True)
class Bar(models.Model):
user_id = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
class Tables(models.Model):
table_no = models.CharField(max_length=14, unique=False)
bar = models.ForeignKey(to=Bar, on_delete=models.CASCADE)
视图.py
def Dashboard(request, pk):
user = User.objects.get(pk=pk)
reservations = Tables.objects.filter(bar__user_id=user)
pending = Reservation.objects.filter(status="pending")
confirmed = Reservation.objects.filter(status="confirmed")
context = {"reservations":reservations, "pending":pending, "confirmed":confirmed}
return render(request, "dashboard/super/landlord/dashboard.html", context)
class Login(View):
""" Login View."""
form_class = LoginForm
template_name = "dashboard/auth/login.html"
def get(self, request):
logout(request)
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
Email = form.cleaned_data.get('Email')
password = form.cleaned_data.get('password')
user = authenticate(username=Email, password=password)
messages.success(request, "you have logged in successfully ")
if user is not None:
if user.is_active:
login(request, user)
return redirect('/dashboard')
else:
error = "Email or password is incorrect"
return render(
request, self.template_name, {'form': form, 'error': error})
网址.py
from django.urls import path
from .views import *
urlpatterns = [
path('dashboard/<int:pk>/', Dashboard, name="dashboard"),
]
模板.html
<li {% if request.path == '/dashboard/' %} class="active" {% endif %}><a href="{% url 'dashboard' user.pk %}"><i class="ion-home"></i> <span class="nav-label">Dashboard</span></a>
</li>
解决方案
双下划线允许filter()
遵循 ForeignKey 关系
user = User.objects.get(email="nasir@yahoo.com")
tbl_count = Tables.objects.filter(bar__user_id=user).count()
推荐阅读
- python - 将值映射到列表中的不同值
- react-native - 从嵌套文本中删除 textDecorationLine
- azure - 如何配置【Azure】应用网关支持多种应用服务?
- kubernetes - Access web server inside a pod in a vm from outside the VM
- c# - In ASP.net, what kind of IF statement could I use to hide a div if the image inside it matches the current page URL?
- android - Limiting the number of loaded items in memory with paging library
- cassandra - system.log 中的墓碑扫描
- ios - UITableViewCell detailTextLabel white space
- excel - Change tab colour based on cell value, runtime error
- python - cmd 和 bat 行为不同