2016-01-17 3 views
0

Я пытаюсь найти лучшую модель для использования в следующем абстрагированном сценарии. Я буду вставлять то, что у меня есть внизу, но если кто-то может предложить улучшения, которые были бы совершенно новыми для этого, и я не могу найти ничего, что с этим вариантом использования в учебниках. Заранее спасибо!Django Models Confusion

Сценарий Брэд Питт и круиз по Тому 10 автомобилей. Каждый день они выбирают машину, которую они будут ездить.

Каждый день их записи дворецкого, которые используют какой автомобиль и дату его использования.

Я хочу, чтобы иметь возможность видеть: Все автомобили, используемые физическим лицом и ассоциированными датами Все люди, которые использовали конкретный автомобиль, и ассоциированные даты.

My Model:

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 класс для хранения автомобиля использовать каждый день, и кто использовал его. Это лучший способ сделать это?

Большое спасибо, ребята!

S

+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, если время не имеет значения.