Last active
December 15, 2021 06:32
-
-
Save aBuder/654fb945f085b17358d8 to your computer and use it in GitHub Desktop.
AccommodationViewSet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AdvertisementType(models.Model): | |
name = models.CharField(max_length=255, blank=False, null=False, verbose_name='Name') # name of feature | |
created = models.DateField(auto_now=True) # created date | |
def __unicode__(self): | |
return u'{0} - {1}'.format(self.id, self.name) | |
class Accommodation(models.Model): | |
name = models.CharField(max_length=255, blank=False, null=False, verbose_name='Name') # name of the accommodation | |
description = models.TextField(blank=True, null=True, verbose_name='Allgemeine Beschreibung') # classification of object like '3 Stars' | |
objectDescription = models.TextField(blank=True, null=True, verbose_name='Objekt Beschreibung') # classification of object like '3 Stars' | |
roomDescription = models.TextField(blank=True, null=True, verbose_name='Raum Beschreibung') | |
bedroomDescription = models.TextField(blank=True, null=True, verbose_name='Schlafzimmer Beschreibung') | |
accommodationType = models.ForeignKey(AccommodationType, related_name='accommodationType', verbose_name='Art der Unterkunft') | |
advertisementType = models.ForeignKey(AdvertisementType, related_name='advertisementType', verbose_name='Art der Anzeige') | |
phone = models.CharField(max_length=13, blank=True, null=True, verbose_name='Telefon') # phone of object | |
fax = models.CharField(max_length=13, blank=True, verbose_name='Fax') # fax of object | |
web = models.URLField(blank=True, null=True, verbose_name='Webseite') # website url of object | |
email = models.EmailField(blank=True, null=True, verbose_name='Email') # email of object | |
contactPerson = models.TextField(blank=True, null=True, verbose_name='Kontaktperson') # name of contact person | |
address = models.ForeignKey(Address, related_name='address', verbose_name='Adresse') # address relation of object | |
location = models.ForeignKey(Location, related_name='location', verbose_name='GPS Daten') | |
animalSupports = models.ManyToManyField(AnimalSupport, related_name='animalSupports', blank=True, null=True, verbose_name='Unterstüzte Tiere') # which animals are supported | |
features = models.ManyToManyField(Feature, related_name='accommodation_features', blank=True, null=True, verbose_name='Ausstattung') | |
class Meta: | |
verbose_name = 'Unterkunft' | |
verbose_name_plural = 'Unterkünfte' | |
def __unicode__(self): | |
return u'{0} - {1}'.format(self.id, self.name) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AdvertisementTypeSerializer(serializers.ModelSerializer): | |
""" | |
Serializer for model 'advertisementType' | |
""" | |
class Meta: | |
model = AdvertisementType | |
fields = ('id', 'name',) | |
class AccommodationSerializer(serializers.ModelSerializer): | |
""" | |
Serializer for model 'accommodation' | |
""" | |
accommodationType = AccommodationTypeSerializer(read_only=True) | |
advertisementType = AdvertisementTypeSerializer(read_only=True) | |
address = AddressSerializer(read_only=True) | |
location = LocationSerializer(read_only=True) | |
animalSupports = AnimalSupportSerializer(read_only=True) | |
features = FeatureSerializer(many=True, read_only=True) | |
class Meta: | |
model = Accommodation | |
fields = ( | |
'id', | |
'name', | |
'description', | |
'objectDescription', | |
'roomDescription', | |
'bedroomDescription', | |
'accommodationType', | |
'advertisementType', | |
'phone', | |
'fax', | |
'web', | |
'email', | |
'contactPerson', | |
'address', | |
'location', | |
'animalSupports', | |
'features', | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
router.register('accommodationTypes', AccommodationTypeViewSet) | |
router.register('accommodations', AccommodationViewSet) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from webapp.serializers import * | |
from rest_framework import viewsets | |
from rest_framework import filters | |
from django_filters import Filter, FilterSet | |
class ListFilter(Filter): | |
def filter(self, qs, value): | |
if not value: | |
return qs | |
self.lookup_type = 'in' | |
values = value.split(',') | |
return super(ListFilter, self).filter(qs, values) | |
class AccommodationFilter(FilterSet): | |
ids = ListFilter(name='id') | |
accommodationType_ids = ListFilter(name='accommodationType_id') | |
class Meta: | |
model = Accommodation | |
fields = ['ids', 'accommodationType_ids'] | |
class AccommodationViewSet(viewsets.ReadOnlyModelViewSet): | |
""" | |
REST API endpoint for 'accommodation' resource | |
""" | |
queryset = Accommodation.objects.all() | |
serializer_class = AccommodationSerializer | |
filter_backends = (filters.DjangoFilterBackend,) | |
filter_class = AccommodationFilter |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I called the url http://localhost:8000/accommodations?accommodationType_id__in=1,2