我有一個模型models.py
一個新的對象:Django的save_model()錯誤創建與M2M領域
class MyModelClass(models.Model):
name = models.CharField(max_length=255)
m2m_1 = models.ManyToManyField(A, blank=True, null=True)
m2m_2 = models.ManyToManyField(B, blank=True, null=True)
fk = models.ForeignKey('C')
int = models.IntegerField()
和admin.py
類:
class MyModelClassAdmin(admin.ModelAdmin):
list_display = ('name',)
#Get all fields selected in MyModelClass m2m_2
def get_selected_in_m2m_2(self, obj):
sel = obj.m2m_2.all() #This line is the one for i get an error. The error is described below.
return sel
def save_model(self, request, obj, form, change):
"""When creating a new object, set the creator field.
"""
m2m_2_selected = self.get_selected_in_m2m_2(obj)
print m2m_2_selected
print request.user
if not change:
obj.creator = request.user
obj.save()
問題:
一切正常,如果我點擊已保存的現有的 MyModelClass的對象在我的管理頁面上的「保存」按鈕。
但是,如果我嘗試創建在管理頁面的新模式對象,然後單擊「保存」按鈕(保存一個新的對象,而不是更新現有的),我會得到一個錯誤:'MyModelClass' instance needs to have a primary key value before a many-to-many relationship can be used.
對不起,我的英文。
任何幫助表示讚賞。
謝謝。
仍然是同樣的問題 – ted 2012-02-25 12:24:31
修改了代碼,現在就試試吧。 – 2012-02-25 12:26:41
無懈可擊,謝謝 – ted 2012-02-25 12:37:18