Tôi có mối quan hệ M2M giữa hai Mô hình sử dụng mô hình trung gian. Vì mục đích của cuộc thảo luận, chúng ta hãy sử dụng ví dụ từ hướng dẫn:Quan điểm dựa trên lớp cho mối quan hệ M2M với mô hình trung gian
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Tôi muốn tận dụng các quan điểm của Django Class-based, để tránh phải viết quan điểm CRUD xử lý. Tuy nhiên, nếu tôi cố gắng sử dụng createView mặc định, nó không hoạt động:
class GroupCreate(CreateView):
model=Group
này làm cho một hình thức với tất cả các lĩnh vực trên đối tượng Group, và đưa ra một hộp chọn nhiều cho lĩnh vực các thành viên, đó sẽ là chính xác cho một mối quan hệ M2M đơn giản. Tuy nhiên, không có cách nào để chỉ định date_joined hoặc invite_reason và gửi biểu mẫu cung cấp AttributeError sau:
"Không thể đặt giá trị trên ManyToManyField chỉ định mô hình trung gian. Thay vào đó, hãy sử dụng Trình quản lý của thành viên."
Có cách nào gọn gàng để ghi đè lên một phần của CreateView chung hoặc soạn chế độ xem tùy chỉnh của riêng tôi để làm điều này với mixin không? Nó cảm thấy như thế này nên là một phần của khuôn khổ, như giao diện quản trị atomatically xử lý M2M mối quan hệ với trung gian sử dụng inlines.
bản sao có thể có của [django Không thể đặt giá trị trên ManyToManyField chỉ định mô hình trung gian. Sử dụng Trình quản lý thay thế] (http://stackoverflow.com/questions/3091328/django-cannot-set-values-on-a-manytomanyfield-which-specifies-an-intermediary-mo) – juliocesar