Đã giải quyết: thêm nhiều phiên bản vào trường liên quan manytoamny django%5D

Vấn đề chính liên quan đến việc thêm nhiều phiên bản vào một trường liên quan là nó có thể gây ra các vấn đề về hiệu suất. Điều này là do cơ sở dữ liệu sẽ phải theo dõi tất cả các phiên bản và điều này có thể dẫn đến hiệu suất chậm hơn.

%5B%5D=1&django%5D%5B%5D=2&django%5D%5B%5D=3

I have a model with a many to many relationship:
<code>class MyModel(models.Model):
    related_field = models.ManyToManyField(RelatedModel)
</code>
In the admin interface, I can add multiple instances of <code>RelatedModel</code> to <code>related_field</code>.  How can I do this in code?  The following doesn't work:
<code>mymodel = MyModel()
mymodel.related_field = [1, 2, 3] # doesn't work!  only adds 1 instance of RelatedModel to related_field.  
mymodel.save() # only saves one instance of RelatedModel in related_field!  
</code>


A:

    mymodel = MyModel()     mymodel.save()     mymodel.related_field = [1, 2, 3]     mymodel.save() 

Mối quan hệ nhiều-nhiều

Mối quan hệ nhiều-nhiều là một kiểu quan hệ giữa hai thực thể trong đó mỗi thực thể có thể có nhiều mối quan hệ với nhau. Ví dụ, một người có thể có nhiều bạn bè và một người bạn có thể có nhiều người mà họ kết bạn. Trong Django, mối quan hệ nhiều-nhiều được thể hiện bằng một phiên bản mô hình có hai trường: một cho thực thể đầu tiên và một cho thực thể thứ hai.

Cách thêm nhiều đối tượng vào mối quan hệ ManyToMany

Để thêm nhiều đối tượng vào mối quan hệ ManyToMany trong Django, bạn có thể sử dụng phương thức add() trên đối tượng many_to_many. Ví dụ: để thêm một bài đăng blog và tác giả vào mối quan hệ many_to_many của bài đăng blog trong Django, bạn sẽ sử dụng đoạn mã sau:

blog.add(BlogPost.objects.create(title='Thêm nhiều đối tượng vào một mối quan hệ ManyToMany', content=content)) author = Author.objects.create(name='John Doe')

Bạn cũng có thể sử dụng phương thức join() trên many_to_many đối tượng để kết hợp các đối tượng thành một tập kết quả duy nhất:

blog.join(tác giả)

bài viết liên quan:

Để lại một bình luận