[英]Django models. Associating tuples in multiple model classes and admin
关于在模型中关联数据的新手Django问题。
我有三个表,CarMake,CarModel和Driver。
CarMake中有几个汽车品牌。
CarModel每个品牌都有几种型号。
我的第一个问题是如何在models.py类中为每个汽车品牌关联多个汽车模型?
其次,在管理页面(并最终通过视图)中,我如何将这些汽车品牌和汽车模型与驾驶员相关联。 因此,在管理员中,如果我制作新的Driver,请选择driver_name,然后从下拉列表中选择car_make,然后根据我选择的Make,从汽车模型的下拉列表中进行选择。
例如在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'''
查看Django模型文档,以了解如何创建您的models.py
。 我在此文件中看到了您要获得的确切信息,但是您将两件事结合在一起。
models.py
应该包含实体以及它们如何连接, 而不是 实体以及这些实体的可能实例 。 models.py
定义数据库结构而不是其内容-注意这一点很重要。
作为一些指针:
CarModel
应该具有CarMake
表的ForeignKey
。 这将定义汽车与制造者之间的关系。 然后,您将需要定义另一个字段来保存该汽车的模型。 我不确定如何仅从特定制造商那里选择汽车(但这本身就是个问题)-也许这应该在前端逻辑中? Driver
还应具有CarModel
的ForeignKey
来定义此驾驶员驾驶的汽车。 请注意,一个驾驶员可以驾驶多少辆车? 您需要确定他们是否只能驾驶一辆或是否可以驾驶很多辆。 在继续学习之前,请先仔细阅读文档,它对您有很大帮助,它始终是最好的起点。
根据您的描述,听起来您想要在CarMake和CarModel之间建立一对多的关系。 例如,一个CarMake可以具有多个CarModel,但是一个CarModel 不能具有多个CarMakes。 以下是一些入门代码:
# 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.