Django / Python - 在对象创建中使用ManyToMany字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django / Python - 在对象创建中使用ManyToMany字段相关的知识,希望对你有一定的参考价值。
有没有办法使用ManyToManyField在模型中创建对象?
以下是模型:
class Booking(models.Model):
tour_ref = models.CharField(max_length=30)
customers = models.ManyToManyField(Customer)
class Customer(models.Model):
name = models.CharField(max_length=40)
email = models.EmailField()
任务是创建一个新的Booking对象。但是,如何使用Customer表中的特定客户执行此操作? (我会通过电子邮件识别他们)。 (显然不止一个客户)。
非常感谢!
答案
使用add
将客户列表添加到新预订中:
booking = Booking.object.create(tour_ref="ref")
customers = list(Customer.objects.filter(email="email@mail.com"))
booking.customers.add(customers)
或者您可以使用反向查找booking_set
和create
向特定客户添加预订:
booking = Booking.object.create(tour_ref="ref")
customer.booking_set.create(tour_ref="ref")
另一答案
试试这个,
In [1]: Customer.objects.create(name="name_1",email="asd@asd.com")
Out[1]: <Customer: Customer object>
In [2]: Customer.objects.create(name="name_2",email="asd@asd.com")
Out[2]: <Customer: Customer object>
In [3]: Customer.objects.create(name="name_3",email="qwe@asd.com")
Out[3]: <Customer: Customer object>
In [4]: book = Booking.objects.create(tour_ref="reff_1")
In [5]: cus = Customer.objects.filter(email='asd@asd.com')
In [6]: for c in cus:
...: book.customers.add(c)
...:
In [7]: book.customers.all()
Out[7]: <QuerySet [<Customer: Customer object>, <Customer: Customer object>]>
以上是关于Django / Python - 在对象创建中使用ManyToMany字段的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何在python中使没有簇质心的簇不可见?
如何在 django 中使 @cached_property 无效
如何在 Django Administration 中使文本加粗