How can I give `def formfield_for_manytomany` the identifier of the edited object

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) 

How can I give def formfield_for_manytomany identifier of the editable object?

+4
source share
1 answer

Assuming ReportAdmin editing after the Report ReportAdmin , try the following:

 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) 
+14
source

Source: https://habr.com/ru/post/1342548/


All Articles