我有以下数据库模型
class Author(models.Model):
choices=['Mr.','Mrs.','Er.','Dr','Prof',]
name=models.CharField('Authors Name',max_length=50)
dob=models.DateField('Birth Date',null=True)
addr=models.CharField('Address',max_length=100,null=True)
email=models.EmailField('Email',null=True)
salutation=models.CharField('Salutation',max_length=4)
headshot=models.ImageField(upload_to='authors/',null=True,blank=True)
def __str__(self):
return self.name
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __str__(self):
return self.name
class Book(models.Model):
title=models.CharField(max_length=100)
authors=models.ManyToManyField(Author)
publisher=models.ForeignKey(Publisher)
publication_date=models.DateField()
pages=models.IntegerField(blank=True,null=True)
price=models.FloatField()
cover=models.ImageField(upload_to='books/',null=True,blank=True)
def __str__(self):
return self.title
Book,Author和Publisher对象将从django管理创建。对于创建并从作者列表中选择作者的每个Book对象,Author的books属性应该使用该作者提供的书籍自动更新。即如果有作者名叫Ram,Shyam,Hari,以及是否与作家Shyam和Hari以及另一个与Shyam和Ram一起创作新书对象。要求是Shyam的书籍字段应该使用Two Book对象自动更新。 怎么办呢?
答案 0 :(得分:0)
你的模型是错误的,你不应该这样做。
多对多字段已经是双向的。你应该只在一侧定义字段本身;你把它放在哪一个(书或作者)上并不重要,但只选择一个。通过该更改,当您将项目添加到关系的一侧时,它将自动在另一侧显示。