2

モデル内のデータの関連付けに関する初心者の Django の質問。

CarMake、CarModel、Driver の 3 つのテーブルがあります。

CarMakeにはいくつかの自動車ブランドがあります。

CarModel には、これらの各ブランドのモデルがいくつかあります。

  • 私の最初の質問は、models.py クラス内で車のブランドごとに複数の車のモデルを関連付ける方法です。

  • 次に、管理ページ (最終的にはビューを介して) で、これらの自動車メーカーと自動車モデルをドライバーに関連付ける方法を教えてください。したがって、Admin で、新しいドライバーを作成する場合は、driver_name を選択し、ドロップダウン リストから car_make を選択します。次に、選択した Make に基づいて、車種のドロップダウン リストから選択します。

    たとえば、管理者の場合:

      driver name =    "john" 
    
      driver car = -> Toyota    -> Avalon
    
  • 3 番目に、ドライバーに対して複数の自動車メーカーとメーカーごとに複数の自動車モデルを選択するにはどうすればよいでしょうか。したがって、ドライバーがフォルク​​スワーゲン モデルの車を選択した場合、ドロップダウン リストから「ゴルフ」と「パサート」を車として選択できます。

ここに私が検討していたいくつかの基本的なコードがあります:

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

0

あなたが説明したことから、CarMake と CarModel の間に 1 対多の関係が必要なようです。たとえば、1 つの CarMake は複数の CarModel を持つことができますが、1 つの 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)
于 2013-04-13T23:49:04.737 に答える