我有一个模型models.py
:
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对象上的“保存”按钮,一切正常。
但是如果我尝试在admin-page中创建一个新的模型对象并单击“保存”按钮(保存一个新对象,而不是更新现有对象),我将收到一个错误:{ {1}}
对不起我的英语不好。
任何帮助表示赞赏
感谢。
答案 0 :(得分:2)
def save_model(self, request, obj, form, change):
"""When creating a new object, set the creator field.
"""
if not change:
obj.creator = request.user
super(MyModelClassAdmin, self).save_model(request, obj, form, change)
m2m_2_selected = self.get_selected_in_m2m_2(obj)
print m2m_2_selected
print request.user
答案 1 :(得分:1)
很常见的问题。你没有对象,所以你不能设置m2m关系。尝试使用超级功能(对不起,不记得正确使用它,但你很容易在文档中找到它)来创建这个对象(好吧,在chages之前处理纯函数),然后修改它并保存。