Lettings

Models

Database models for the lettings app.

class lettings.models.Letting(*args, **kwargs)

Stores a single letting entry.

Parameters:
  • title – The title of the letting.

  • address – The address of the letting (related to lettings.Address).

class lettings.models.Address(*args, **kwargs)

Stores a single address entry.

Parameters:
  • number – The street number.

  • street – The street name.

  • city – The city name.

  • state – The state name.

  • zip_code – The zip code.

  • country_iso_code – The country ISO code.

Class definitions

Letting from models.py
class Letting(models.Model):
    """Stores a single letting entry.

    :param title: The title of the letting.
    :param address: The address of the letting (related to :class:`lettings.Address`).
    """
    title = models.CharField(max_length=256)
    address = models.OneToOneField(Address, on_delete=models.CASCADE)

    def __str__(self):
        return self.title
Address from models.py
class Address(models.Model):
    """Stores a single address entry.

    :param number: The street number.
    :param street: The street name.
    :param city: The city name.
    :param state: The state name.
    :param zip_code: The zip code.
    :param country_iso_code: The country ISO code.
    """
    number = models.PositiveIntegerField(validators=[MaxValueValidator(9999)])
    street = models.CharField(max_length=64)
    city = models.CharField(max_length=64)
    state = models.CharField(max_length=2, validators=[MinLengthValidator(2)])
    zip_code = models.PositiveIntegerField(validators=[MaxValueValidator(99999)])
    country_iso_code = models.CharField(max_length=3, validators=[MinLengthValidator(3)])

    def __str__(self):
        return f'{self.number} {self.street}'

    class Meta:
        verbose_name_plural = 'Addresses'

Views

Views for lettings app.

lettings.views.index(request)

Display a list of lettings.Letting.

Template: lettings/index.html

lettings.views.letting(request, letting_id)

Display an individual lettings.Letting.

Template: lettings/letting.html

URLs

URL Configuration for lettings app.

in urls.py
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:letting_id>/', views.letting, name='letting'),
]