0
我一直在创建基于国家部分的权限到我的网站的管理控制台。django管理员复制对象
我已经覆盖了save_model()
方法上我的课,从admin.ModelAdmin
类继承,这一点:
def save_model(self, request, obj, form, change):
try:
form_cleaned_countries = [self.get_field(c,self.country_field).pk for c in form.cleaned_data[self.country_field.split('__')[0]]]
except TypeError:
form_cleaned_countries = [self.get_field(form.cleaned_data[self.country_field.split('__')[0]], self.country_field).pk]
type_of = 'change' if change else 'add'
cbp = [c.country.pk for c in self.get_country_based_permissions(request, self.app_model, type_of)]
valid = True
countries_not_valid_for = []
for c in form_cleaned_countries:
if not c in cbp:
valid = False
countries_not_valid_for.append(Country.objects.get(pk=c))
if not valid:
raise Exception('You do not have the permission to \'%s\' on %s for %s.' % (type_of, self.model, countries_not_valid_for))
print 'Saving....'
super(CountryBasedPermissionsAdmin, self).save_model(request, obj, form, change)
的方法后运行,当它带你回到列表的管理页面刚刚添加或更改的模型,新对象出现两次,并且两个链接都到达完全相同的位置。他们有完全相同的PK。而当我点击链接编辑管理控制台中的对象它与此错误:
'get()返回多个VisaType - 它返回2!查询参数是{'pk':31}'
我只是好奇,如果其他人有django或管理控制台这个问题?
我也得到了这个错误,到目前为止还没有找到一个修复:(其不仅与管理员,但 – Paulo
我修正了我的错误实际上我重写的查询集函数是返回重复结果,而管理员只是奇怪的是,即使是重复的结果实际上并不在数据库中,只是在我的queryset的末尾添加了一个distinct(),并且它似乎正在工作。 – vishen
如果您自己修复它,请将该解决方案作为答案发布不是评论)并接受它。 –