2

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

我有三个表,CarMake、CarModel 和 Driver。

CarMake 有几个汽车品牌。

CarModel 有每个品牌的几个模型。

  • 我的第一个问题是如何在 models.py 类中关联每个汽车品牌的多个汽车型号?

  • 其次,在管理页面(最终通过视图)中,我如何将这些汽车制造商和汽车型号与驾驶员相关联。所以在 Admin 中,如果我创建一个新的 Driver,我选择 driver_name,然后从下拉列表中选择 car_make,然后根据我选择的 Make,从汽车型号的下拉列表中选择。

    例如在管理员中:

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

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

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'''
4

2 回答 2

1

查看Django 模型文档以了解如何创建您的models.py. 我看到了你在这个文件中得到的确切想法,但你正在结合两件事。

models.py应该包含实体以及它们是如何连接的, 而不是 实体和这些实体的可能实例models.py定义数据库结构而不是其内容 - 这一点很重要。

作为一些指针:

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

在继续之前仔细阅读文档,它对您的帮助比其他任何事情都大,并且始终是最好的起点。

于 2013-04-13T19:32:05.383 回答
0

From what you have described, it sounds like you want a one to many relationship between CarMake and CarModel. e.g. One CarMake can have multiple CarModels, but one CarModel can not have multiple CarMakes. Here is some code to get you started:

# 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)

Creating Make Models

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

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

Registering in Admin

# 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)
于 2013-04-13T23:49:04.737 回答