2016-01-17 153 views
0

我正試圖找到最佳的模型用於下面的抽象場景。我將粘貼下面的內容,但是如果任何人都可以提出改進意見,那麼這對我來說很新鮮,在教程中我找不到任何與此用例相關的內容。提前致謝!Django模型混淆

場景 布拉德皮特和湯姆巡航分享10輛車。他們每天選擇他們將駕駛的汽車。

每天,他們的管家記錄誰在使用哪輛車和它正在使用的日期。

我希望能夠看到: 個人使用的所有車輛及其關聯日期 所有使用特定車輛的人以及關聯日期。

我的模型:

class Person(models.Model): 
    first_name = models.CharField(max_length=200, default='FIRST') 
    last_name = models.CharField(max_length=200, default='LAST') 
    def __str__(self): 
     return self.name 

class Car(models.Model): 
    name = models.CharField(max_length=200) 
    def __str__(self): 
     return self.name 

class Car_used(models.Model): 
    used_on = models.DateTimeField(auto_now_add=True) #Default to now? 
    car = models.ForeignKey(Car, on_delete=models.CASCADE) 
    person = models.ForeignKey(Person, on_delete=models.CASCADE) 
    def __str__(self): 
     return self.car.name 

所以我用這個Car_used類來存儲汽車上使用的每一天,和誰使用它。這是最好的方式去做這件事嗎?

很多很多感謝的傢伙!

小號

+0

一切看起來不錯。這真的很簡單。所以,沒有辦法改善。 –

+0

太好了 - 謝謝! – Simon

回答

0

考慮重命名Car_used到CarUsed。這是公約。

您還應該實施一些機制,以防止在同一天使用同一輛車的兩個人。您可以添加如下的unique_together約束。

class Car_used(models.Model): 
    # Your code here. 

    class Meta: 
     unique_together = ('used_on', 'car', 'person') 

也可以考慮改變used_on的類型爲DateField如果時間並不重要。