我有两个DB型号:

class Book(models.Model):
    title = models.CharField(max_length=150, null=False)
    author = models.CharField(max_length=150, null=False)
    date_pub = models.DateField(verbose_name="Date Published")


class Customer(models.Model):
    name = models.CharField(max_length=25, null=False)
    surname = models.CharField(max_length=35, null=False)
    age = models.IntegerField(null=False)
    book = models.ForeignKey(to=Book, on_delete=models.CASCADE)

我的应用程序是最近创建的,因此我使用manage.py shell向这些模型插入数据。
例如,假设我创建了标题为"Kolobok""Zolotaya Ribka"的书籍。接下来,我创建了customer"Vasya"。当我创建customer"Vasya"时,我将fieldbook指向“kolobok”。但随着时间的推移,我想把book"Zolotaya Ribka"附加到"Vasya"的书籍中。
我怎么能做到?

最佳答案

你可能需要一个ManyToManyField [Django-doc]代替。多对多字段意味着aCustomer可以链接到0,一个或多个Books(这里这意味着客户购买了0,一本或多本书),aBook可以链接到0,一个或多个客户(因此一本书是由0,一个或多个客户购买的)。
因此,我们可以通过引入一个字段来重新建模:

class Customer(models.Model):
    name = models.CharField(max_length=25, null=False)
    surname = models.CharField(max_length=35, null=False)
    age = models.IntegerField(null=False)
    books = models.ManyToManyField(Book)

然后我们可以像您一样构建书籍和客户示例:
b1 = Book.objects.create(title='Kolobok', author='')
b2 = Book.objects.create(title='Zolotaya Ribka', author='')

接下来我们可以创建一个客户:
c1 = Customer.objects.create(name='Vasya', surname='', age=73)

然后我们可以把这两本书连接起来:
c1.books.add(b1, b2)

有关更多信息,请参见documentation on many-to-many relationships

关于python - 将值附加到Django模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57833741/

10-11 08:03