Создание удобных для конечного пользователя описаний отношений unique_toght для полей в моделях django - PullRequest
0 голосов
/ 05 мая 2020

в основном мою проблему можно резюмировать, как показано ниже. Проблемная область - Недвижимость.

У меня есть таблица ApartmentSpace, где каждая строка представляет арендуемую apartment_flat / space с заданным набором удобств (например, все коммунальные услуги, удобства, размер этажа, количество и тип доступных rooms et c.), и у меня есть таблица свойств, в которую могут быть добавлены одна или несколько квартир как поле ManyToMany. В этом случае один номер apartment_space_id может быть прикреплен к нескольким объектам (поскольку многие квартиры в реальном мире могут быть представлены с одним и тем же набором удобств, я предполагаю, что все такие квартиры имеют только один apartment_space_id)

Таким образом, одна сдаваемая в аренду единица будет представлена ​​парой (apartment_space_id, property_id), представляющей отношение unique_toght для этой сдаваемой в аренду единицы в физическом мире. Бонус: если возможно, я бы также хотел представить в этом свойстве все квартиры, прикрепленные к этому свойству, как идентифицируемые с помощью local_apartment_space_id, который предоставит автоматически увеличивающийся идентификатор всем присоединенным квартирам только для этого свойства и не будет зависеть от глобального apartment_space_id первичный ключ для таблицы Apartment.

Теперь моя проблема в том, что если я хочу отправить уведомление конечному пользователю для арендуемой единицы, скажем, для apartment_space_id, равного 8, и property_id, равного 3, local_apartment_space_id равно 4, я не хочу, чтобы это выглядело так: "Привет, у вас есть уведомление для (apartment_space_id = 8, property_id = 3) rentable-unit" , но вместо этого я хочу, чтобы он выглядел как это:

«Привет, у вас есть уведомление об аренде: 4-я студия-пространство в западном коридоре на 9-м этаже жилого комплекса Hibiscus» . Любой хороший способ добиться этого? Текст описания уведомления будет сгенерирован в строковом формате внутри моей функции просмотра.

довольно простая деталь модели, хотя я не думаю, что она действительно нужна в этом случае, но я все равно предоставлю, будет выглядеть так:

class ApartmentSpace(models.Model):
    apartment_space_id = models.AutoField(primary_key=True)
    apartment_facilities = models.ForeignKey(ApartmentFacilitiesObject, On_delete=models.CASCADE)

class Property(models.Model):
    property_id = models.AutoField(primary_key=True)
    property_name = models.Charfield(max_length=100)
    apartments = models.ManyToManyField(ApartmentSpace)

Бонус: как сгенерировать local_apartment_space_id для каждого экземпляра модели Property? Я также рассматриваю возможность подключения квартиры и собственности с использованием модели членства с некоторыми парами through_fields с использованием (apartment_space_id, apartment_name, floor_located, floor_location_descriptor, property_id), но я не знаю, как использовать членство в этом случае, поэтому я ценю ваше помощь.

...