Django模型。关联多个模型类和管理员中的元组

时间:2013-04-13 18:30:29

标签: python django django-models

关于在模型中关联数据的新手Django问题。

我有三张桌子,CarMake,CarModel和Driver。

CarMake有几个汽车品牌。

CarModel拥有各品牌的几种型号。

  • 我的第一个问题是如何将每辆车的多个车型联系起来 在models.py类中的品牌?

  • 其次,在管理页面(最终通过视图)我该怎么做 将这些汽车制造和汽车模型与司机联系起来。所以在Admin中 如果我创建一个新驱动程序,我选择driver_name,然后从a中选择 下拉列表car_make,然后根据Make I selected,选择 从汽车模型的下拉列表中。

    例如在admin中:

      driver name =    "john" 
    
      driver car = -> Toyota    -> Avalon
    
  • 第三,我如何选择多个汽车品牌和多个车型 每个人为司机。因此,如果驾驶员选择Volkswagon模型车,他们可以从下拉列表中选择“高尔夫”和“帕萨特”作为他们的车。

以下是我正在考虑的一些基本代码:

from django.db import models

class CarMake(models.Model):
    MAKE = (
        ('Ford'),
        (''Toyota'),
        ('Volkswagon'),
    )

    car_make = models.CharField(choice=MAKE)

class CarModel(models.Model):
    MODEL = (
        ('Ford'
            ('Focus'),
            ('Explorer'),
            ('F150'),
        )
        ('Toyota'
            ('Avalon'),
            ('Highlander'),
            ('Tundra'),
        )
        ('Volkswagon'
            ('Golf'),
            ('Jetta'),
            ('Passat'),
        )
    )

    car_model = models.CharField(choice=MODEL)

class Driver(models.Model):
    driver_name = models.CharField(max_length=120)
    driver_car = '''choose make and model'''

2 个答案:

答案 0 :(得分:1)

查看Django Models Documentation,了解如何创建models.py。我看到了你在这个文件中得到的确切想法,但是你要结合两件事。

models.py应包含实体及其连接方式 实体及其可能的实例实体models.py定义数据库结构其内容 - 这一点很重要。

作为一些指示:

  • CarModel应该有ForeignKeyCarMake表。这将定义汽车与谁之间的关系。然后,您需要定义另一个字段来保存该汽车的模型。我不确定如何强制只从某个制造商那里选择汽车(但这本身就是一个问题) - 也许这应该是前端逻辑?
  • Driver还应该ForeignKey CarModel来定义此驱动程序所驱动的汽车。 注意一个司机可以驾驶多少辆汽车?你需要决定他们是否只能驾驶一辆或是否可以开多辆。

在继续之前,请仔细阅读文档,它将为您提供更多帮助,并且始终是最佳起点。

答案 1 :(得分:0)

根据您的描述,听起来您想要CarMake和CarModel之间的一对多关系。例如一个CarMake可以有多个CarModel,但是一个CarModel 不能有多个CarMake。以下是一些可以帮助您入门的代码:

# In app/models.py
class CarMake(models.Model):
    name = models.CarField(max_length=30)


class Car(models.Model):
    model = models.CarField(max_length=30)
    make = models.ForeignKey(CarMake)


class Driver(models.Model):
    driver_name = models.CharField(max_length=120)
    car = models.ForeignKey(Car)

创建制作模型

make = CarMake(name='Toyota')
make.save()

car = Car(make=make, model='Avalon')
car.save()

在管理中心注册

# in app/admin.py
from django.contrib import admin
from app.models import CarMake, CarModel, Driver

admin.site.register(CarMake)
admin.site.register(CarModel)
admin.site.register(Driver)