0
私はDjangoの1.11 & Python3.5での私のモデルの3つのクラスがあるとします。DjangoのForeignKeyのフィールドをデコレータを使用して事前に設定する方法はありますか?
クラス1:
class Country(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
クラス2:
class City(models.Model):
country = models.ForeignKey(Country)
name = models.CharField(max_length=255)
latitude = models.DecimalField(max_digits=15, decimal_places=10)
longitude = models.DecimalField(max_digits=15, decimal_places=10)
def __str__(self):
return self.name
クラス3:
class Profile(AbstractUser):
username = models.ForeignKey(User, max_length=100, blank=False, unique=True)
address = models.CharField(max_length=255, blank=False)
city = models.ForeignKey(City, on_delete=models.CASCADE, related_name="city_set", max_length=100, blank=False, null=True)
country = models.CharField(max_length=255, blank=False)
birthplace = models.ForeignKey(City, on_delete=models.CASCADE, related_name="birthplace_set", max_length=100, blank=False, null=True)
latitude = models.DecimalField(max_digits=15, decimal_places=10)
longitude = models.DecimalField(max_digits=15, decimal_places=10)
def __str__(self):
return self.username
@property
def country(self):
if not self.city:
return False
else:
negara = City.objects.get(name=self)
return negara.country
@property
def latitude(self):
if not self.birthplace:
return False
else:
lat = City.objects.get(latitude=self)
return lat.latitude
@property
def longitude(self):
if not self.birthplace:
return False
else:
lnt = City.objects.get(longitude=self)
return lnt.longitude
を
私の質問は:
- 都市の属性(都市の階級からのForeignKey)からプロフィールのクラスの国の属性を取得して自動入力/事前入力する方法を教えてください。 @propertyデコレータを使用して取得しようとしましたが、はありません。値。
- 1つのクラス(Profileのクラス)のForeignKeyフィールドに同じクラス(Cityクラスのクラス)を2回一緒に使用できますか?この場合、都市&出生地の属性であり、上記の質問を出生地の属性から緯度&の経度の属性について繰り返します。
それは私を助けて、あなたの助けをありがとう、私はこれを使用して終わる: @property デフ国(自己): ない場合はself.city: はfalse を返す: リターンself.city.countryを。名 – pije