Резюме: у меня есть две родственные модели, и я хочу, чтобы они совместно использовали поле (zip_code
):
class Business(models.Model):
#other fields
zip_code = models.CharField(max_length = 10)
class Job(models.Model):
business = models.ForeignKey(Business, on_delete = "models.CASCADE")
zip_code = business.zip_code #Does not work
Полное описание:
Я пытаюсь создать сайт доски объявлений о вакансиях,Пользователь вводит почтовый индекс, и задания в указанном радиусе должны быть возвращены. Вот мой models.py:
class Business(models.Model):
name = models.CharField(max_length = 150)
address = models.CharField(max_length = 150)
city = models.CharField(max_length = 150)
zip_code = models.CharField(max_length = 10)
state = models.CharField(max_length = 30)
phone_number = models.CharField(max_length = 10)
def __str__(self):
return self.name +", " + self.address + ", " + self.state
class Job(models.Model):
business = models.ForeignKey(Business, on_delete = "models.CASCADE")
title = models.CharField(max_length = 100)
description = models.CharField(max_length = 500)
zip_code = business.zip_code
def __str__(self):
return self.title + " - " + self.business.name
При попытке отфильтровать Job
объекты по почтовому индексу:
jobs_in_zip = Job.objects.all().filter(zip_code = zip_code)
Я понял, что модель Job
не имела zip_code
поле. Я попытался обновить модель следующим образом:
class Job(models.Model):
business = models.ForeignKey(Business, on_delete = "models.CASCADE")
zip_code = business.zip_code
, но это вернуло AttributeError: 'ForeignKey' object has no attribute 'zip_code'
Как мне поступить? Заранее спасибо.
PS: Если у вас в голове более подходящее название, не стесняйтесь его менять, я не думаю, что четко определил проблему так хорошо.