我该如何给`def formfield_for_manytomany`一个可编辑对象的ID [英] How can I give `def formfield_for_manytomany` an id of editable object
本文介绍了我该如何给`def formfield_for_manytomany`一个可编辑对象的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class Report(models.Model):
precursor = models.ManyToManyField(Precursor)
class ReportAdmin(admin.ModelAdmin):
def formfield_for_manytomany(self, db_field, request, **kwargs):
ops_area = Report.objects.get(id=???????).ops_area
print id
print ops_area
if db_field.name == "r_precursor":
kwargs["queryset"] = Precursor.objects.filter(ops_area=ops_area)
print kwargs
return super(ReportAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
我怎么给 def formfield_for_manytomany
可编辑对象的ID?
How can I give def formfield_for_manytomany
an id of editable object?
推荐答案
假设您在 Report
实例正在由 ReportAdmin
编辑,请尝试以下操作:
Assuming you're after the Report
instance being edited by the ReportAdmin
, try this:
class ReportAdmin(admin.ModelAdmin):
def get_object(self, request, object_id):
# Hook obj for use in formfield_for_manytomany
self.obj = super(ReportAdmin, self).get_object(request, object_id)
print "Got object:", self.obj
return self.obj
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "r_precursor" and getattr(self, 'obj', None):
kwargs["queryset"] = Precursor.objects.filter(
ops_area=self.obj.ops_area)
return super(ReportAdmin, self).formfield_for_manytomany(
db_field, request, **kwargs)
这篇关于我该如何给`def formfield_for_manytomany`一个可编辑对象的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文