如果我有中间车型,如何将车辆(Car
)添加到车库(Garage
)?我无法理解这一点。
class Car(models.Model):
name = models.CharField(max_length=50)
price = models.DecimalField()
class GarageCar(models.Model):
car = models.ForeignKey('Car')
quantity = models.IntegerField()
class Garage(models.Model):
name = models.CharField("Garage_Name", max_length=30)
cars = models.ManyToManyField('GarageCar', blank=True, null=True)
owner = models.ForeignKey(User, related_name='owner_garage', verbose_name='Owner Garage')
视图
def add_car(request, car_id):
如果我有两个型号(Car and Garage with field cars = models.ManyToManyField('Car')我会创建这样的东西:
def add_car(request, car_id):
if request.user.is_authenticated():
user = request.user
car = Car.objects.get(id = car_id)
e = car.garage_set.create(name='example_name', owner=user)
return render_to_response('add.html')
答案 0 :(得分:1)
首先,您需要对模型进行一些更改:
GarageCar
需要有Car
和Garage
的外键。through
参数指定中间表。 按如下方式更改模型:
class GarageCar(models.Model):
car = models.ForeignKey('Car')
garage = models.ForeignKey('garage')
quantity = models.IntegerField()
class Garage(models.Model):
name = models.CharField("Garage_Name", max_length=30)
cars = models.ManyToManyField('Car', through='GarageCar')
然后,您可以使用以下内容将汽车添加到车库:
GarageCar.objects.create(car=car,
garage=garage,
quantity=1,
)
有关详细信息,请参阅extra fields on many-to-many relationships上的文档。