繁体   English   中英

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

[英]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还应具有CarModelForeignKey来定义此驾驶员驾驶的汽车。 请注意,一个驾驶员可以驾驶多少辆车? 您需要确定他们是否只能驾驶一辆或是否可以驾驶很多辆。

在继续学习之前,请先仔细阅读文档,它对您有很大帮助,它始终是最好的起点。

根据您的描述,听起来您想要在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM