[英]What to do with model general attributes in django models?
django模型的所有模型實例共有的屬性應該怎么做? 例如,如果我有一個辦公室的django模型,其中每個辦公室都有一個房間號和一個電話號碼,並且位於特定的城市,則可以執行以下操作:
class Office(models.Model):
room = models.CharField(max_length=3)
phone = models.CharField(max_length=8)
city = models.CharField(max_length=20)
但是,如果我要定義一個辦公室的django模型,根據定義,該模型的所有實例都具有相同的城市? 我可以做這樣的事情:
class LondonOffice(models.Model):
room = models.CharField(max_length=3)
phone = models.CharField(max_length=8)
city = models.CharField(default='London', max_length=20)
但是在那種情況下, city
字段是多余的,並在數據庫中創建了不必要的列。 做這樣的事會更好嗎
class LondonOffice(models.Model):
room = models.CharField(max_length=3)
phone = models.CharField(max_length=8)
city = 'London'
從而創建只有兩列的數據庫表?
在這個簡單的示例中,多余的db列將不是一個真正的問題。 但是,在我正在考慮的實際示例中,我將擁有大量這些模型范圍的屬性,並且為每個屬性創建一個多余的列似乎是一種浪費。
我將city
移動到一個單獨的模型中,並從Office
創建一個ForeignKey
:
class City(models.Model):
name = models.CharField(max_length=20)
class Office(models.Model):
room = models.CharField(max_length=3)
phone = models.CharField(max_length=8)
city = models.ForeignKey(City)
或者,如果城市列表是靜態的並且是預定義的,則可以使用以下choices
:
CITIES = (
(0, 'London'),
(1, 'New York'),
(2, 'Moscow'),
)
class Office(models.Model):
room = models.CharField(max_length=3)
phone = models.CharField(max_length=8)
city = models.CharField(choices=CITIES)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.