Django - 在 ForeignKey 中使用 ForeignKey 进行列表过滤
Django - List Filtering using a ForeignKey within a ForeignKey
我可以使用“住房”外键从“住房”过滤预订列表
但我需要根据使用“HousingType”外键的h_type来完成
我不确定这里的术语是否正确,但我想我正在尝试在 ForeignKey 中使用 ForeignKey,但不确定如何在视图中完成此操作。
models.py
class HousingType(models.Model):
name = models.CharField(max_length=254)
friendly_name = models.CharField(max_length=254, null=True, blank=True)
class Housing(models.Model):
h_type = models.ForeignKey('HousingType', null=True, blank=True, on_delete=models.SET_NULL)
class Booking(models.Model):
housing = models.ForeignKey('Housing', null=True, blank=True, on_delete=models.SET_NULL)
views.py
def view_bookings(request):
housing = Housing.objects.all()
bookings = Booking.objects.all()
if request.GET:
if 'housing_type' in request.GET:
h_types = request.GET['housing_type'].split(',')
bookings = bookings.filter(housing_type__name__in=h_types)
h_types = HousingType.objects.filter(name__in=h_types)
html模板
<a href="{% url 'view_bookings' %}?housing_type=apartments">Apartments</a>
您可以 .filter(…)
[Django-doc] 使用:
Booking.objects.filter(<b>housing__h_type__name__in=h_types</b>)
或者如果您使用 friendly_name
:
Booking.objects.filter(<b>housing__h_type__friendly_name__in=h_types</b>)
我可以使用“住房”外键从“住房”过滤预订列表
但我需要根据使用“HousingType”外键的h_type来完成
我不确定这里的术语是否正确,但我想我正在尝试在 ForeignKey 中使用 ForeignKey,但不确定如何在视图中完成此操作。
models.py
class HousingType(models.Model):
name = models.CharField(max_length=254)
friendly_name = models.CharField(max_length=254, null=True, blank=True)
class Housing(models.Model):
h_type = models.ForeignKey('HousingType', null=True, blank=True, on_delete=models.SET_NULL)
class Booking(models.Model):
housing = models.ForeignKey('Housing', null=True, blank=True, on_delete=models.SET_NULL)
views.py
def view_bookings(request):
housing = Housing.objects.all()
bookings = Booking.objects.all()
if request.GET:
if 'housing_type' in request.GET:
h_types = request.GET['housing_type'].split(',')
bookings = bookings.filter(housing_type__name__in=h_types)
h_types = HousingType.objects.filter(name__in=h_types)
html模板
<a href="{% url 'view_bookings' %}?housing_type=apartments">Apartments</a>
您可以 .filter(…)
[Django-doc] 使用:
Booking.objects.filter(<b>housing__h_type__name__in=h_types</b>)
或者如果您使用 friendly_name
:
Booking.objects.filter(<b>housing__h_type__friendly_name__in=h_types</b>)