自动更新多个到多个字段

时间:2017-07-21 13:47:00

标签: python django django-models

我有以下数据库模型

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对象自动更新。 怎么办呢?

1 个答案:

答案 0 :(得分:0)

你的模型是错误的,你不应该这样做。

多对多字段已经是双向的。你应该只在一侧定义字段本身;你把它放在哪一个(书或作者)上并不重要,但只选择一个。通过该更改,当您将项目添加到关系的一侧时,它将自动在另一侧显示。