2016-01-17 115 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如果时间并不重要。